我有一个熊猫数据框,如下所示:
|Var1 | Var2 | Method | Category|
|-------------------------------------|
| A | 1 | check | cat1 |
| A | 1 | check | cat2 |
| B | 2 | check | cat1 |
| B | 2 | creditcard | cat2 |
其中,“方法”只能是“支票”或“信用卡”,并且“类别”也仅限于两个可能的类别。
只要给定的Var 1和Var 2的“方法”相同,我就希望将两个类别行合并为列,如下所示:
|Var1 | Var2 | Method | Cat1 | Cat2 |
|----------------------------------------|
| A | 1 | check | cat1 | cat2 |
| B | 2 | check | cat1 | NaN |
| B | 2 | creditcard| NaN | cat 2|
这甚至可能吗?我尝试了各种groupby / pivot / index重置安排,但没有任何效果。
谢谢您的帮助!
答案 0 :(得分:1)
使用groupby
的一种方式创建join
字符串,那么这就是get_dummies
问题
s=df.groupby(['Var1','Var2','Method'])['Category'].\
apply(','.join).str.get_dummies(',')
s=s*s.columns
s.reset_index(inplace=True)
s
Var1 Var2 Method cat1 cat2
0 A 1 check cat1 cat2
1 B 2 check cat1
2 B 2 creditcard cat2