【问题标题】:limit amount of rows as result of groupby Pandasgroupby Pandas 限制行数
【发布时间】:2020-10-05 21:19:42
【问题描述】:

我的 groupby 代码运行良好:

df_20.groupby(['Jaar'])['GemeenteNaam'].value_counts()

它将 2015、2016、2017、2018 年分组。使用 value_counts() 给出每年在 ['GemeenteNaam'] 列中出现 GemeenteNaam(英文:城市名称)的频率。

但这导致我的 groupby 结果中每年有超过 100 个城市。我每年只想要 10 个城市。

问题:如何通过 groupby 限制行数?

我试过这个,但这当然会限制总结果:

df_20.groupby(['Jaar'])['GemeenteNaam'].value_counts().head(10)

我检查了 groupby 文档字符串,但找不到答案。希望你比我聪明(可能......)。提前致谢!!问候 Jan(来自多雨的荷兰)。

【问题讨论】:

    标签: python pandas group-by


    【解决方案1】:

    您可以在 lambda 函数中过滤值:

    df_20.groupby(['Jaar'])['GemeenteNaam'].apply(lambda x: x.value_counts().head(10))
    

    或在level=0 中添加另一个groupby - 按第一级索引:

    df_20.groupby(['Jaar'])['GemeenteNaam'].value_counts().groupby(level=0).head(10)
    

    【讨论】:

    • 哇,你真快!好的!谢谢。这正是我所需要的。。我知道 lambda 并应用,但根本没想过用它来解决我的问题。再次感谢,你帮了我!问候简
    【解决方案2】:

    您可以改为使用 head(10) 对第一行进行切片:

    头(10) ==> [:10]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2023-01-30
      • 1970-01-01
      • 2017-03-07
      • 2022-12-17
      • 2018-01-08
      • 1970-01-01
      相关资源
      最近更新 更多