在pandas数据框中旋转一列并创建4个新列

阿尔贝托·F

我正在使用熊猫数据框。我有datafreme像:

    df
    COUNTRY   LINE    PRODUCT    SERVICE
    Argelia    1       1.0        Mobile
    Argelia    1       2.0        Mobile
    Argelia    1       3.0        Mobile
    Argelia    2       1.0        Mobile
    Argelia    3       2.0        Mobile
    Argelia    3       3.0        Mobile

我想按LINE分组并旋转PRODUCT列,但是我需要4个产品列(product_1,product_2,product_3和product_4),它不在乎是否有PRODUCT值= 4。

我正在尝试使用get_dummies以下代码:

df = pd.concat([df, pd.get_dummies(dfs['PRODUCT'], prefix='product')], axis=1)
df.drop(['PRODUCT'], axis=1, inplace=True)
df = df.groupby(['COUNTRY', 'LINE', 'SERVICE']).agg({'product_1' : np.max, 'product_2': np.max, 'product_3':np.max, 'product_4':np.max}).reset_index()

但是它只给我3列产品,我希望4列具有此数据框:

 COUNTRY    LINE   SERVICE   product_1  product_2  product_3  product_4
 Argelia     1     Mobile       1          1          1           0
 Argelia     2     Mobile       1          0          0           0
 Argelia     3     Mobile       0          1          1           0

可能吗?

(我也需要将PRODUCT值类型从1.0更改为1)

耶斯列尔

使用DataFrame.reindex与所有可能的产品的新栏目,这里是另一种解决方案,希望以更快DataFrame.pivot_tableDataFrame.clip获得最大1价值,rename为转换浮动列整数,DataFrame.add_prefixreindex

cols = [f'product_{i}' for i in range(1, 5)]
df1 = (df.pivot_table(index=['COUNTRY', 'LINE', 'SERVICE'],
                      columns='PRODUCT',
                      fill_value=0,
                      aggfunc='size')
        .clip(upper=1)
        .rename(columns=int)
        .add_prefix('product_')
        .reindex(cols, axis=1, fill_value=0))
print (df1)
PRODUCT               product_1  product_2  product_3  product_4
COUNTRY LINE SERVICE                                            
Argelia 1    Mobile           1          1          1          0
        2    Mobile           1          0          0          0
        3    Mobile           0          1          1          0

在您的DataFrame.pop用于提取列的解决方案中,转换为整数,然后通过进行聚合max并添加reindex

df = pd.concat([df, pd.get_dummies(df.pop('PRODUCT').astype(int),prefix='product')], axis=1)
cols = [f'product_{i}' for i in range(1, 5)]
df = df.groupby(['COUNTRY', 'LINE', 'SERVICE']).max().reindex(cols, axis=1, fill_value=0)
print (df)
                      product_1  product_2  product_3  product_4
COUNTRY LINE SERVICE                                            
Argelia 1    Mobile           1          1          1          0
        2    Mobile           1          0          0          0
        3    Mobile           0          1          1          0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在pandas数据框中创建新列,作为另一列的函数

来自分类Dev

使用针对另一列的 if 语句在 Pandas 数据框中创建新列

来自分类Dev

在pandas数据框中创建一列

来自分类Dev

Python Pandas数据框创建一个新列,其中包含另一列的减法

来自分类Dev

pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

来自分类Dev

根据熊猫中另一列上的值在数据框中创建一个新列

来自分类Dev

Python Pandas:使用三个不同的值在数据框中创建一列

来自分类Dev

仅在pandas数据框中旋转两列并添加其中一列

来自分类Dev

数据框,使用基于另一列索引的值创建一个新列

来自分类Dev

通过在 Pandas 的另一列中拆分字符串来创建新的数据框列

来自分类Dev

尝试使用Python / pandas根据来自另一个数据框的一列的内部和创建一个新的数据框

来自分类Dev

用R中另一列的分组值进行计数来创建一个新的数据框

来自分类Dev

如何通过每隔一列减去第一列来创建一个新的数据框?

来自分类Dev

根据数据框的其他列创建一个新的pandas数据框列

来自分类Dev

根据不同条件在Pandas数据框中创建一个新列

来自分类Dev

使用 *args 编写函数在 Pandas 数据框中创建一个新列

来自分类Dev

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

来自分类Dev

根据pandas中另一列的状态创建一个新列

来自分类Dev

根据其他列行中的过滤值,在pandas数据框中创建一个新列

来自分类Dev

HoloViews:为pandas数据框中的每一列创建框线图

来自分类Dev

如何在数据框中创建一个新列,并根据前一列中结果的百分比将其设置为1或0?

来自分类Dev

模糊匹配一列中的字符串并使用fuzzywuzzy 创建新的数据框

来自分类Dev

在R中另一数据框中的另一列的基础上在一个数据框中创建一列

来自分类Dev

创建一个在每一列中具有随机数的数据框

来自分类Dev

如何为数据框中的每一列创建一个csv文件?

来自分类Dev

Python:在数据框中,创建一个新列,并使用从另一列的值中切出的字符串

来自分类Dev

创建一个新列,但创建数据框的副本

来自分类Dev

从Pandas数据框中的其他列创建新列

来自分类Dev

用Pandas Python中另一个数据框中的另一列的索引更新数据框中的一列

Related 相关文章

  1. 1

    在pandas数据框中创建新列,作为另一列的函数

  2. 2

    使用针对另一列的 if 语句在 Pandas 数据框中创建新列

  3. 3

    在pandas数据框中创建一列

  4. 4

    Python Pandas数据框创建一个新列,其中包含另一列的减法

  5. 5

    pandas 数据框创建一个新列,其值基于另一列上的 groupby sum

  6. 6

    根据熊猫中另一列上的值在数据框中创建一个新列

  7. 7

    Python Pandas:使用三个不同的值在数据框中创建一列

  8. 8

    仅在pandas数据框中旋转两列并添加其中一列

  9. 9

    数据框,使用基于另一列索引的值创建一个新列

  10. 10

    通过在 Pandas 的另一列中拆分字符串来创建新的数据框列

  11. 11

    尝试使用Python / pandas根据来自另一个数据框的一列的内部和创建一个新的数据框

  12. 12

    用R中另一列的分组值进行计数来创建一个新的数据框

  13. 13

    如何通过每隔一列减去第一列来创建一个新的数据框?

  14. 14

    根据数据框的其他列创建一个新的pandas数据框列

  15. 15

    根据不同条件在Pandas数据框中创建一个新列

  16. 16

    使用 *args 编写函数在 Pandas 数据框中创建一个新列

  17. 17

    根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

  18. 18

    根据pandas中另一列的状态创建一个新列

  19. 19

    根据其他列行中的过滤值,在pandas数据框中创建一个新列

  20. 20

    HoloViews:为pandas数据框中的每一列创建框线图

  21. 21

    如何在数据框中创建一个新列,并根据前一列中结果的百分比将其设置为1或0?

  22. 22

    模糊匹配一列中的字符串并使用fuzzywuzzy 创建新的数据框

  23. 23

    在R中另一数据框中的另一列的基础上在一个数据框中创建一列

  24. 24

    创建一个在每一列中具有随机数的数据框

  25. 25

    如何为数据框中的每一列创建一个csv文件?

  26. 26

    Python:在数据框中,创建一个新列,并使用从另一列的值中切出的字符串

  27. 27

    创建一个新列,但创建数据框的副本

  28. 28

    从Pandas数据框中的其他列创建新列

  29. 29

    用Pandas Python中另一个数据框中的另一列的索引更新数据框中的一列

热门标签

归档