[英]How to create indicator columns in a pandas dataframe based on groups in another dataframe?
我有一個 dataframe 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
我還有另一個 dataframe df2為上面的 class 列提供分組
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 的解決方案,我將不勝感激,因為我正在嘗試更多地了解 pandas 的工作原理。
在熊貓中,我們可以在進行groupby
時傳遞mapping
,這里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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.