我有一个与此类似的DataFrame
id name value
a Adam 5
b Eve 6
c Adam 4
a Eve 3
d Seth 2
b Adam 4
a Adam 2
我正在尝试查看有多少id
与多少名称及其重叠相关联。我在id列上做了一个groupby,然后我可以看到有多少个id有多少个与之关联的名字。
df.groupby('id')['name'].nunique().value_counts()
我现在想要的是获取名称为列名的表的方法,索引是id,值是每个id和名称的总和。我可以通过初始化一个DataFrame来进行for循环,其中列是name列中的值,但我想知道是否有一个pandas方法来完成这样的事情?
答案 0 :(得分:2)
是你想要的吗?
In [54]: df.pivot_table(index='id', columns='name', values='value', aggfunc='sum')
Out[54]:
name Adam Eve Seth
id
a 7.0 3.0 NaN
b 4.0 6.0 NaN
c 4.0 NaN NaN
d NaN NaN 2.0
或没有NaN'
In [56]: df.pivot_table(index='id', columns='name', values='value', aggfunc='sum', fill_value=0)
Out[56]:
name Adam Eve Seth
id
a 7 3 0
b 4 6 0
c 4 0 0
d 0 0 2