我有一个数据框df,如下所示:
df name city
0 John New York
1 Carl New York
2 Carl Paris
3 Eva Paris
4 Eva Paris
5 Carl Paris我想知道不同城市的总人数。
df2 city number
0 New York 2
1 Paris 3或者城市中同名的人数
df2 name city number
0 John New York 1
1 Eva Paris 2
2 Carl Paris 2
3 Eva New York 0发布于 2018-05-29 20:53:29
我相信需要GroupBy.size
df1 = df.groupby(['city']).size().reset_index(name='number')
print (df1)
city number
0 New York 2
1 Paris 4df2 = df.groupby(['name','city']).size().reset_index(name='number')
print (df2)
name city number
0 Carl New York 1
1 Carl Paris 2
2 Eva Paris 2
3 John New York 1如果需要所有组合,一种解决方案是添加unstack和stack
df3=df.groupby(['name','city']).size().unstack(fill_value=0).stack().reset_index(name='count')
print (df3)
name city number
0 Carl New York 1
1 Carl Paris 2
2 Eva New York 0
3 Eva Paris 2
4 John New York 1
5 John Paris 0或使用MultiIndex.from_product的reindex
df2 = df.groupby(['name','city']).size()
mux = pd.MultiIndex.from_product(df2.index.levels, names=df2.index.names)
df2 = df2.reindex(mux, fill_value=0).reset_index(name='number')
print (df2)
name city number
0 Carl New York 1
1 Carl Paris 2
2 Eva New York 0
3 Eva Paris 2
4 John New York 1
5 John Paris 0发布于 2018-05-29 20:58:54
统计同一城市中不同名字的人数:
groups = df.groupby('city').count().reset_index()统计不同城市的同名人数:
groups = df.groupby('city').count().reset_index()https://stackoverflow.com/questions/50584887
复制相似问题