【问题标题】:Summing values in a group of a groupby object?对一组 groupby 对象中的值求和?
【发布时间】:2013-10-18 01:14:55
【问题描述】:

我正在尝试为我分组的每个条目总结 groupby 对象中列的值。

假设我有一个这样的 df:

Letters Numbers Items Bool
A       1       lamp  1
B       2       glass 1
B       2       table 1
C       5       pic   0

我对字母进行分组,然后想知道字母组中布尔值的总和。我该怎么做?我一直在努力

df_new = df.groupby('letters').bool.sum()

...

df_new = df.groupby('letters').sum('bool')

以及其他变体...

最后,我想得到一个向量,其中包含每个字母组之和的值。例如,它将是[1,2,0]

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你真的很亲密!给定

    >>> df
      Letters  Numbers  Items  Bool
    0       A        1   lamp     1
    1       B        2  glass     1
    2       B        2  table     1
    3       C        5    pic     0
    

    您可以对所有内容求和并取您想要的列:

    >>> # slower
    >>> df.groupby("Letters").sum()["Bool"] # sum everything, select Bool
    Letters
    A          1
    B          2
    C          0
    Name: Bool, dtype: int64
    

    或者更好的是,只取你想要的列并求和:

    >>> df.groupby("Letters")["Bool"].sum() # select Bool, sum it
    Letters
    A          1
    B          2
    C          0
    Name: Bool, dtype: int64
    

    我更喜欢使用Series,因为您可以使用它做更多事情,但如果您愿意,可以使用list.tolist() 将其转换为list

    【讨论】:

    • @mgilson:我想我之前可能在这里提到过一次,但我曾经有一个本地代码,我一起破解来进行数据处理。在pandas 度过了一个下午后,我把它扔了,没有回头。我唯一的希望是 Martijn 永远不会接受它 :^) - 我第一次看到他回答 pandas 问题时,我正在切换到 Ruby 或 Julia 之类的。
    • 我认为 Martijn 还没有掌握 numpy/scipy。我觉得他不感兴趣。公平地说,我正在慢慢尝试学习 ruby​​,因为我们的产品使用它。到目前为止,我几乎没有留下深刻的印象(虽然它确实有一些有趣的部分,比如他们的“块”或他们所说的任何东西)......我也对学习 Go 感兴趣......
    猜你喜欢
    • 2015-06-21
    • 2019-09-17
    • 2018-04-23
    • 2016-09-05
    • 2021-08-09
    • 2022-01-25
    • 1970-01-01
    • 2018-06-22
    • 2019-04-05
    相关资源
    最近更新 更多