如何将每个组的连续行连接起来并使其成为数据帧中的列,并计算每个组的出现次数?

时间:2019-09-26 10:39:34

标签: python-3.x pandas dataframe

我有一个看起来像这样的数据框:

id     actions

1s       Aaa 

1s       Bbb

1s       Ccc

1s       Bbb

1s       Ccc

2s       Aaa

2s       Ddd

2s       Ddd

2s       Aaa

2s       Bbb

我想要这样的东西:

id  Aaa->Bbb    Bbb->Ccc   Ccc->Bbb   Aaa->Ddd   Ddd->Ddd   Ddd->Aaa

1s    1          2            1          0       0           0

2s    1          0            0          1       1           1

我该如何实现?我尝试了一些代码,但是并没有完全按照我的要求工作。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用Series.str.catDataFrameGroupBy.shift进行配对,并用crosstab重塑形状:

df = pd.crosstab(df['id'],df.groupby('id')['actions'].shift().str.cat(df['actions'],sep='->'))
print (df)
actions  Aaa->Bbb  Aaa->Ddd  Bbb->Ccc  Ccc->Bbb  Ddd->Aaa  Ddd->Ddd
id                                                                 
1s              1         0         2         1         0         0
2s              1         1         0         0         1         1