我有一个看起来像这样的数据框:
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
我该如何实现?我尝试了一些代码,但是并没有完全按照我的要求工作。
任何帮助将不胜感激。
答案 0 :(得分:0)
使用Series.str.cat
和DataFrameGroupBy.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