gpt4 book ai didi

python - 如何对行进行分组以便在使用 pandas 创建的组上使用 value_counts ?

转载 作者:行者123 更新时间:2023-11-30 22:12:34 25 4
gpt4 key购买 nike

我在数据框中有一些客户数据,例如:

S No Country Sex
1 Spain M
2 Norway F
3 Mexico M
...

我想要这样的输出:

Spain
M = 1207
F = 230

Norway
M = 33
F = 102

...

我有一个基本概念,我想根据国家/地区对行进行分组,例如 df.groupby(df.Country) ,并且在选定的行上,我需要运行类似df.Sex.value_counts()

谢谢!

最佳答案

我认为需要crosstab :

df = pd.crosstab(df.Sex, df.Country)

或者如果想使用您的解决方案,请添加 unstack对于第一级 MultiIndex 的列:

df = df.groupby(df.Country).Sex.value_counts().unstack(level=0, fill_value=0)
print (df)
Country Mexico Norway Spain
Sex
F 0 1 0
M 1 0 1

编辑:

如果想添加更多列,则可以设置将哪个级别参数转换为列:

df1 = df.groupby([df.No, df.Country]).Sex.value_counts().unstack(level=0, fill_value=0).reset_index()
print (df1)
No Country Sex 1 2 3
0 Mexico M 0 0 1
1 Norway F 0 1 0
2 Spain M 1 0 0

df2 = df.groupby([df.No, df.Country]).Sex.value_counts().unstack(level=1, fill_value=0).reset_index()
print (df2)
Country No Sex Mexico Norway Spain
0 1 M 0 0 1
1 2 F 0 1 0
2 3 M 1 0 0

df2 = df.groupby([df.No, df.Country]).Sex.value_counts().unstack(level=2, fill_value=0).reset_index()
print (df2)
Sex No Country F M
0 1 Spain 0 1
1 2 Norway 1 0
2 3 Mexico 0 1

关于python - 如何对行进行分组以便在使用 pandas 创建的组上使用 value_counts ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51058073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com