Python中如何对索引含'key'的Pandas DataFrame第三列求和?
高效计算Pandas DataFrame中指定索引行的列值之和
嘿,别用for循环啦!Pandas本身就提供了非常高效的矢量化操作,完全能替代这种低效的循环写法。
核心思路
我们可以直接利用Pandas的索引筛选功能,先选出所有索引包含'key'的行,再对目标列求和——全程都是批量操作,比循环快N倍,尤其是数据量大的时候优势特别明显。
具体实现代码
首先要注意:你代码里用了iloc[i,3],这对应的是第四列(因为Pandas的位置索引是从0开始的),但你描述里说的是“第三列”,我把两种情况都列出来:
情况1:目标是位置上的第三列(索引为2)
# 筛选索引含'key'的行,取第三列,求和 total = data[data.index.str.contains('key')].iloc[:, 2].sum()
情况2:目标是你代码里的第四列(索引为3)
total = data[data.index.str.contains('key')].iloc[:, 3].sum()
更推荐的写法(用列名)
如果你知道第三列的列名(比如叫third_col),用loc按列名选择会更清晰,可读性更强:
total = data.loc[data.index.str.contains('key'), 'third_col'].sum()
为什么这个方法更高效?
Pandas的矢量化操作是基于底层的NumPy数组实现的,它会把整个操作转换成C级别的批量计算,而不是像Python for循环那样逐行执行——当你的DataFrame有几万甚至几十万行的时候,这种效率差距会非常显著。
内容的提问来源于stack exchange,提问作者Sus20200
相关产品推荐
相关产品推荐

