You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中对指定列的前310行求和?

Hey there! Let's break down how to get the sum of specific columns for the first 310 rows of your Pandas DataFrame, and fix that issue you ran into.

按列索引指定列求和

Pandas的iloc用于按位置索引(行/列的数字索引,从0开始)选择数据,结合行切片和列选择的正确用法如下:

  • 单个列(比如第5列,索引为4):
    要获取该列前310行的总和,直接在切片后调用.sum()即可:

    # 获取第5列前310行的总和(标量结果)
    col5_sum = df.iloc[0:310, 4].sum()
    
  • 多个列(比如索引0、2、4的列):
    把要选的列索引放在列表里,再求和,会返回各列的总和(一个Series,索引是列名):

    # 获取索引0、2、4的列前310行的每列总和
    multi_col_sum = df.iloc[0:310, [0, 2, 4]].sum()
    

按列名指定列求和

如果更习惯用列名操作,用loc或者直接列索引结合head()会更直观:

  • 单个列(比如列名为Sales):

    # 两种写法都可以,结果一致
    col_sum_by_name = df['Sales'].head(310).sum()
    # 或者用loc(注意loc的行切片是闭区间,所以到309)
    col_sum_by_name = df.loc[:309, 'Sales'].sum()
    
  • 多个列(比如列名为Sales、Profit、Cost):

    # 获取指定列前310行的每列总和
    multi_col_sum_by_name = df[['Sales', 'Profit', 'Cost']].head(310).sum()
    

为什么你的之前的代码没得到预期结果?

你提到用df.iloc[0:310, 4].sum()得到了310行数据,这大概率是操作中的小失误:

  • 如果只写df.iloc[0:310, 4],确实会返回第5列的前310行数据(一个Series);
  • 要是你误加了axis=1参数(比如df.iloc[0:310,4].sum(axis=1)),因为Series没有行维度,这个操作会直接返回原Series,看起来还是310行。

只要确保正确调用无额外参数的.sum(),就能得到该列的总和啦。

内容的提问来源于stack exchange,提问作者tommylicious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:11:05