【问题标题】:Pandas calculate median after groupby熊猫在分组后计算中位数
【发布时间】:2021-01-14 22:26:45
【问题描述】:

我正在尝试以 Dataframe 作为快照回答以下问题。我尝试按照代码返回错误,如下所示。如果我删除了 groupby 中的一列。代码不会返回错误。请指教。

df.loc[df.age_group == pd.Interval(left=30, right=40)].groupby(df[['Gender','Education']]).DMDHHSIZ.median()
ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional

问题:将样本限制在 30 至 40 岁之间的人群。然后计算每个教育程度内女性和男性的家庭规模中位数。

【问题讨论】:

  • 你的 groupby 应该是一个列表,而不是一个数据框
  • 但是 age_group 是一个表示区间的字符串,您将它与作为浮点数的 median() 的结果进行比较。什么是 DMDHHSIZ?
  • 谢谢,删除数据框有效。 DMDHHSIZ 是家庭尺寸系列。

标签: python pandas dataframe


【解决方案1】:

只需将列列表传递给 groupby:

.groupby(['Gender','Education'])

【讨论】:

  • 谢谢。现在它起作用了。还是不熟悉 Pandas。
【解决方案2】:

来自声明和图片:

问题:将样本限制在 30 至 40 岁之间的人群。 然后计算每个家庭中女性和男性的家庭规模中位数 受教育程度。

然后你可以先过滤age_group,按照图片中的模式是(30,40],然后通过GenderEducation计算grouping之后的median()

df.loc[df.age_group == '(30,40]'].groupby(['Gender','Education']).DMDHHSIZ.median()

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2018-04-29
    相关资源
    最近更新 更多