![](/img/trans.png)
[英]Python pandas groupby aggregate on multiple columns, then pivot
[英]Python Pandas, aggregate multiple columns from one
我是熊貓的新手,我有一個這樣的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
我想把它變成這樣一種:
name a b c
0 alpha 2 0 1
1 beta 1 2 0
2 gamma 1 0 1
也就是說我想按“名稱”和“值”分組,然后計算它們,並為我找到的每個“值”值創建一列。
這只是一個交叉表:
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
如果您使用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
后者可能更快:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.