Как объединить последовательные строки каждой группы и сделать их столбцами в кадре данных и подсчитать вхождения для каждой группы? - PullRequest
1 голос
/ 26 сентября 2019

У меня есть датафрейм, который выглядит примерно так:

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 голосов
/ 26 сентября 2019

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...