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