gpt4 book ai didi

python - 在循环中将 Groupby 对象转换为 DataFrame 对象

转载 作者:行者123 更新时间:2023-12-01 09:17:48 25 4
gpt4 key购买 nike

我有一个数据框df,看起来像这样

No Country Sex Age Group
1 Spain M Young
2 Norway F Middle
3 Mexico M Elderly
...

我的目标是首先根据国家/地区对这些数据进行分组,然后使用 .value_counts() 根据性别和年龄组进行分析

因此,我通过 df2 = df.groupby(df.Country) 对此使用了 groupby 并像这样循环

for d in df2:
print(type(d))

我得到这个输出:

<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
...

我想使用

for d in df2:
print(pd.DataFrame(d).Sex.value_counts())

但我收到此错误

DataFrame constructor not properly called!

我问过类似的question昨天,但这仅限于一个非常特殊的查询。我想学习的是知道如何将层“分组”为 block ,然后对这些特定 block 进行分析。

谢谢!

最佳答案

我认为更好的是使用:

s = df.groupby('Country').Sex.value_counts()
print (s)
Country Sex
Mexico M 1
Norway F 1
Spain M 1
Name: Sex, dtype: int64

但是如果想要使用循环,则需要通过添加另一个变量 i 来解压 group 和 df 的元组名称:

df2 = df.groupby(df.Country)
for i, d in df2:
print(type(d))
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>

或者使用GroupBy.apply :

def func(x):
print (x)
a = x.Sex.value_counts()
#another code
return a

df2 = df.groupby(df.Country).apply(func)

关于python - 在循环中将 Groupby 对象转换为 DataFrame 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51077458/

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