如果满足某些条件,则将行转换为熊猫数据框的列

时间:2019-03-31 17:43:44

标签: python pandas

我有一个熊猫数据框,如下所示:

|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重置安排,但没有任何效果。

谢谢您的帮助!

1 个答案:

答案 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