【问题标题】:Python Pandas : Group by one column and see the content of all columns?Python Pandas:按一列分组并查看所有列的内容?
【发布时间】:2015-07-01 22:44:10
【问题描述】:

我有一个这样的数据框:

org     group   count
org1      1       2
org2      1       2
org3      2       1
org4      3       3
org5      3       3
org6      3       3

这就是我想要的,来自“组”列中每个唯一组的一个条目:

org     group   count
org1      1       2
org3      2       1
org4      3       3

我正在使用以下 group by 命令,但我仍然可以看到所有行:

df.groupby('group').head()

有没有人知道如何获得预期的结果?

【问题讨论】:

    标签: python pandas group-by aggregation


    【解决方案1】:

    您可以在groupdrop_duplicates 吗?

    In [172]: df.drop_duplicates('group')
    Out[172]:
        org  group  count
    0  org1      1      2
    2  org3      2      1
    3  org4      3      3
    

    此外,df.drop_duplicates(['group', 'count']) 在这种情况下也有效。

    但是,这可能不是最好的一种非常灵活的方法。 @EdChum 的 Answer 提供了灵活性指导。

    【讨论】:

    • 在 100,000 行数据集上,.drop_duplicates() 需要 3.7 毫秒,而 .groupby().first().reset_index() 需要 5.3 秒——而且我猜也更清晰一些。
    • 我有点怀疑你是否总是想在重复项中取第一项,所以我认为groupby 可以灵活地使用这种方式。但是,对于当前情况,基准测试是有意义的。谢谢@SANand
    【解决方案2】:

    groupby 对象上调用first,如果要将分组索引作为列返回,则可以选择调用reset_index

    In [448]:
    
    df.groupby('group').first().reset_index()
    Out[448]:
       group   org  count
    0      1  org1      2
    1      2  org3      1
    2      3  org4      3
    

    【讨论】:

      猜你喜欢
      • 2016-12-31
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 2019-02-16
      • 2021-06-10
      • 1970-01-01
      相关资源
      最近更新 更多