没有聚合单个结果的 Pandas Groupby

Posted

技术标签:

【中文标题】没有聚合单个结果的 Pandas Groupby【英文标题】:Pandas Groupby with no aggregation for single result 【发布时间】:2021-11-05 16:03:53 【问题描述】:

我在 Pandas 中有一个数据框,它显示了一个城市/州的男性百分比。数据框df 如下所示(注意这不是我的实际使用/数据,但我的数据类型相似)

STATE      CITY        PERC_MEN
ALABAMA    ABBEVILLE   41.3%
ALABAMA    ADAMSVILLE  53.5%
....
WYOMING    WRIGHT      46.6%

每个州/男性组合的百分比将恰好返回 1 个值。

如何显示给定州的城市/人口值?我的代码如下所示(我需要第一行分组STATE,因为我对数据做了其他事情)

for state, state_df in df.groupby(by=['STATE']):
    print(state_df.groupby(by=['CITY'])['PERC_MEN'])

但是这会打印<pandas.core.groupby.generic.SeriesGroupBy object at 0xXXXXXXX>

通常对于 groupby,我使用像 mean()sum() 这样的聚合,但有没有办法只返回值?

【问题讨论】:

必须有更好的方法来做到这一点,但您可以使用state_df.groupby(by=['CITY'])['PERC_MEN'].apply(lambda x: x) 原样返回值。 【参考方案1】:

我不会迭代数据框。

设置索引和切片

df=df.set_index(['STATE','CITY'])


df.xs(('ALABAMA', 'ABBEVILLE'), level=['STATE','CITY'])

df.loc[('ALABAMA', 'ABBEVILLE'),:]

【讨论】:

以上是关于没有聚合单个结果的 Pandas Groupby的主要内容,如果未能解决你的问题,请参考以下文章

格式化/抑制 Pandas 聚合结果的科学记数法

格式化/抑制 Pandas 聚合结果的科学记数法

格式化/抑制 Pandas 聚合结果的科学记数法

从 Pandas 聚合中重命名结果列(“FutureWarning:不推荐使用带有重命名的字典”)

pandas使用groupby函数进行分组聚合使用agg函数指定聚合统计计算的数值变量并自定义统计计算结果的名称(naming columns after aggregation)

如何使用 pandas 聚合大型 DataFrame 中的多个列?