簡體   English   中英

Python Pandas,從一個聚合多個列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM