Python 如何分组,然后计算每列中唯一项目的数量?
使用此代码:Python 如何分组,然后计算每列中唯一项目的数量?,python,python-3.x,pandas,numpy,Python,Python 3.x,Pandas,Numpy,使用此代码: import pandas df = pandas.DataFrame() df['id'] = list('aaabbbcccdddeee') df['gender'] = list('mmfmfmmffmfmfff') 我得到的数据帧如下: id gender 0 a m 1 a m 2 a f 3 b m 4 b f 5 b m 6 c m 7 c
import pandas
df = pandas.DataFrame()
df['id'] = list('aaabbbcccdddeee')
df['gender'] = list('mmfmfmmffmfmfff')
我得到的数据帧如下:
id gender
0 a m
1 a m
2 a f
3 b m
4 b f
5 b m
6 c m
7 c f
8 c f
9 d m
10 d f
11 d m
12 e f
13 e f
14 e f
如何将df
按id
进行拆分,然后计算每个类别中m
和f
的数量,以便得到类似以下内容的结果:
m f
a 2 1
b 2 1
c 1 2
d 2 1
e 0 3
您可以与len一起使用:
res = df.pivot_table(index='id', columns='gender',
aggfunc=len, fill_value=0)
print(res)
gender f m
id
a 1 2
b 1 2
c 2 1
d 1 2
e 3 0
最容易的df.groupby(['id','gender']).gender.count().unstack(fill_value=0)
。。。如果您需要更高的性能,请尝试pivot
或crosstab
。我觉得如果它是重复的,您应该链接到重复的版本。谢谢你的回答。我做了,链接的答案在这里,别担心。。。作为复制品关闭不是一件坏事。还有,不客气!我不认为agg函数的差异是回答这个问题的原因,尽管它在其他方面都是重复的,但我会听从你更好的判断,因为我尊重你的意见。@coldspeed,这是我提出的一个有趣的问题。不幸的是,没有答案:(。