我有一个格式为 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化,我将不胜感激,因为我正试图进一步了解熊猫的工作原理。
答案 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