Python Groupby id和唯一列值的转换计数
我有以下数据帧:Python Groupby id和唯一列值的转换计数,python,pandas,Python,Pandas,我有以下数据帧: id task1 task2 1 A run eat 2 A run drink 3 A walk drink 4 B walk eat 5 B jog eat 我想把它变成 id run walk jog eat drink 1 A 2 1 0 1 2 2
id task1 task2
1 A run eat
2 A run drink
3 A walk drink
4 B walk eat
5 B jog eat
我想把它变成
id run walk jog eat drink
1 A 2 1 0 1 2
2 B 0 1 1 2 0
我可以用一种非常低效的方法使用字典计数器来实现这一点,但我想知道如何在不创建较小的数据帧和连接的情况下有效地使用Pandas来实现这一点 您可以使用和:
df = pd.melt(df, id_vars='id', value_vars=['task1', 'task2'])
print df
id variable value
0 A task1 run
1 A task1 run
2 A task1 walk
3 B task1 walk
4 B task1 jog
5 A task2 eat
6 A task2 drink
7 A task2 drink
8 B task2 eat
9 B task2 eat
df = pd.crosstab(df['id'], df['value']).reset_index()
df.columns.name = ''
print df
id drink eat jog run walk
0 A 2 1 0 2 1
1 B 0 2 1 0 1