如何基于另一个数据框中的组在熊猫数据框中创建指标列?

时间:2020-06-26 20:51:45

标签: python pandas numpy

我有一个格式为 df 的数据框:

    Object   Class1    Class2    Class3    Class4    Class5     .... Other random columns
    Apple       1        0          1         1         1
    Orange      0        1          0         0         0
    Grape       0        0          0         0         0
    Banana      1        1          0         0         0
    Guava       1        0          0         0         0

我还有另一个数据框 df2 ,它为上面的类列提供了分组

   Class    Group
   Class1   Group1
   Class2   Group2
   Class3   Group2
   Class4   Group1
   Class5   Group3

我想做的是从df2中进行分组,并在df中创建指标列。更清楚地说,我想要:

    Object   Class1    Class2    Class3    Class4    Class5    Group1    Group2    Group3     .... Other random columns
    Apple       1        0          1         1         1        1         1         1 
    Orange      0        1          0         0         0        0         1         1
    Grape       0        0          0         0         0        0         0         0
    Banana      1        1          0         0         0        1         1         0
    Guava       1        0          0         0         0        1         0         0

创建此内容的好方法是什么?如果我能获得一个易于理解的解决方案,并且不一定过于Python化,我将不胜感激,因为我正试图进一步了解熊猫的工作原理。

1 个答案:

答案 0 :(得分:3)

在熊猫中,我们执行mapping时可以通过groupby,这里df2是您的mapping

df=df.join(df.reindex(df2.Class,axis=1).\
        groupby(df2.set_index('Class').Group.to_dict(), axis=1).max())
df
Out[204]: 
   Object  Class1  Class2  Class3  Class4  Class5  Group1  Group2  Group3
0   Apple       1       0       1       1       1       1       1       1
1  Orange       0       1       0       0       0       0       1       0
2   Grape       0       0       0       0       0       0       0       0
3  Banana       1       1       0       0       0       1       1       0
4   Guava       1       0       0       0       0       1       0       0
相关问题