【问题标题】:Pandas groupby().get_group().size does not return correct size?Pandas groupby().get_group().size 不返回正确的大小?
【发布时间】:2019-01-17 20:36:47
【问题描述】:

我正在对每个国家的人口统计数据进行分组。我发现我想获取每个组的大小有问题,.size 或 np.size() 返回组的第一列的总和,而不是行数。

我正在使用 Python 3.7 和 Pandas 0.23.4

df.groupby('foo').apply(lambda grp: grp.size)

这会返回一个更大的数字。

Countries.groupby('foo').apply(lambda grp: grp['some colum'].size)

这将给出正确的计数

有人知道为什么.size 在每种情况下的工作方式都不同吗?谢谢!

【问题讨论】:

  • 这实际上是我在社区的第一篇文章。如果我的问题或写作不清楚,请告诉我。谢谢大家。
  • 试试Countries.groupby(ContinentDict).size()
  • 这是什么ContinentDict?请提供minimal reproducible example
  • 我编辑了问题以使其看起来更简洁。斯科特的代码有效。但是为什么当我在.apply 中使用.size 时会输出错误呢?

标签: python pandas dataframe pandas-groupby


【解决方案1】:

Pandas GroupBy.get_group 构造一个 DataFrame。您调用了DataFrame.size,它返回对象中元素的计数。要获取组中的行数,请尝试

Countries.groupby(ContinentDict).get_group('Asia').shape[0]

【讨论】:

  • 感谢 Vaishali,这行得通,我正在努力理解
猜你喜欢
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多