如何在Pandas DataFrame中对小于1的数值实现sumif条件求和
实现方案
你可以直接通过pandas的布尔过滤+链式求和实现,代码简洁且执行效率高:
import pandas as pd d = {'col1': [0.1, 0.2, 1.2]} dataframe = pd.DataFrame(data=d) # 全局统计所有列中小于1的数值总和 result = dataframe[dataframe < 1].sum().sum()
如果仅需要对指定列做统计,可以简化为如下写法,性能更高:
# 仅统计col1列中小于1的数值总和 result = dataframe.loc[dataframe['col1'] < 1, 'col1'].sum()
逻辑说明
dataframe < 1会生成和原DataFrame结构一致的布尔矩阵,小于1的位置标记为True,反之为False- 用布尔矩阵过滤原DataFrame后,不满足条件的位置会被置为
NaN,pandas求和时会自动忽略NaN值 - 全局统计时第一次
sum()会按列求和得到Series结构,第二次sum()会将所有列的求和结果汇总,适配多列全局统计的需求
内容的提问来源于stack exchange,提问作者Adler Müller
相关产品推荐
相关产品推荐

