gpt4 book ai didi

python - 如何使用 Pandas 对与给定条件匹配的列中的值求和?

转载 作者:IT老高 更新时间:2023-10-28 20:35:33 24 4
gpt4 key购买 nike

假设我有一个这样的列:

a   b  
1 5
1 7
2 3
1 3
2 5

我想总结 b 的值,例如 a = 1。这会给我 5 + 7 + 3 = 15.

如何在 pandas 中做到这一点?

最佳答案

这里的基本思想是选择要求和的数据,然后对它们求和。可以通过几种不同的方式选择数据,其中一些如下所示。

bool 索引

可以说,选择值的最常用方法是使用 Boolean indexing .

使用此方法,您可以找出列 'a' 等于 1 的位置,然后对列 'b' 的相应行求和。您可以使用 loc 来处理行和列的索引:

>>> df.loc[df['a'] == 1, 'b'].sum()
15

bool 索引可以扩展到其他列。例如,如果 df 还包含一个列 'c',并且我们想要对 'b' 中的行求和,其中 'a' 为 1 且 'c' 为 2,我们会这样写:

df.loc[(df['a'] == 1) & (df['c'] == 2), 'b'].sum()

查询

另一种选择数据的方法是使用 query要过滤您感兴趣的行,请选择“b”列,然后求和:

>>> df.query("a == 1")['b'].sum()
15

同样,该方法可以扩展为对数据进行更复杂的选择:

df.query("a == 1 and c == 2")['b'].sum()

请注意,这比 bool 索引方法更简洁。

分组方式

另一种方法是使用 groupby根据“a”列中的值将 DataFrame 拆分为多个部分。然后,您可以将每个部分相加并得出 1 相加的值:

>>> df.groupby('a')['b'].sum()[1]
15

这种方法可能比使用 bool 索引要慢,但如果您想检查列 a 中其他值的总和,它会很有用:

>>> df.groupby('a')['b'].sum()
a
1 15
2 8

关于python - 如何使用 Pandas 对与给定条件匹配的列中的值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com