Dri*_*ico 3 python aggregate pandas
我是熊猫的新手,我有一个这样的DataFrame:
name value
0 alpha a
1 beta b
2 gamma c
3 alpha a
4 beta b
5 beta a
6 gamma a
7 alpha c
Run Code Online (Sandbox Code Playgroud)
我想把它变成这样一种:
name a b c
0 alpha 2 0 1
1 beta 1 2 0
2 gamma 1 0 1
Run Code Online (Sandbox Code Playgroud)
也就是说我想按"名称"和"值"分组,然后计算它们,并为我找到的每个"值"值创建一列.
这只是一个交叉表:
In [78]:
print pd.crosstab(df.name, df.value)
value a b c
name
alpha 2 0 1
beta 1 2 0
gamma 1 0 1
Run Code Online (Sandbox Code Playgroud)
如果您使用groupby:
In [90]:
print df.groupby(['name', 'value']).agg(len).unstack().fillna(0)
value a b c
name
alpha 2 0 1
beta 1 2 0
gamma 1 0 1
Run Code Online (Sandbox Code Playgroud)
后者可能更快:
In [92]:
%timeit df.groupby(['name', 'value']).agg(len).unstack().fillna(0)
100 loops, best of 3: 3.26 ms per loop
In [93]:
%timeit pd.crosstab(df.name, df.value)
100 loops, best of 3: 7.5 ms per loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |