如何使用pandas对符合给定条件的列中的值求和?
假设我有一个像这样的列:
a b 1 5
1 7
2 3
1 3
2 5
例如,我想总结b
where的值a = 1
。这会给我5 + 7 + 3 = 15
。
如何在熊猫中做到这一点?
回答:
这里的基本思想是选择要求和的数据,然后将它们求和。可以通过几种不同的方式来选择数据,以下显示了其中几种。
回答:
可以说,选择值的最常见方法是使用布尔索引。
使用此方法,您可以找出列“ a”等于哪里1
,然后将列“ b”的相应行求和。您可以loc
用来处理行和列的索引:
>>> df.loc[df['a'] == 1, 'b'].sum()15
布尔索引可以扩展到其他列。例如,如果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()
请注意,这比布尔索引方法更简洁。
回答:
另一种方法是groupby
根据“
a”列中的值将DataFrame分为多个部分。然后,您可以将每个部分相加并得出1的总和:
>>> df.groupby('a')['b'].sum()[1]15
这种方法可能比使用布尔索引慢,但如果要检查column中其他值的总和,该方法很有用a
:
>>> df.groupby('a')['b'].sum()a
1 15
2 8
以上是 如何使用pandas对符合给定条件的列中的值求和? 的全部内容, 来源链接: utcz.com/qa/430294.html