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

Python TypeError报错:列表索引应为整数/切片而非字符串

问题:计算DataFrame中kh列总和时触发TypeError错误

问题重现

原始代码

# 从csv读取top和bottom字段,生成区间数据
def get_interval(row):
   return df[(df['DEPTH']>=row['top']) & (df['DEPTH']<=row['bottom'])]

# 合并所有区间
intervals = list(perf.apply(get_interval, axis=1))
 
pd.concat(intervals)

# 计算数据框中kh列的总和
x =  intervals['kh'].sum()

报错信息

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-d3a755411e27> in <module>
      1 #Displaying and Summ the kh over the selected interval
      2 
----> 3 x =  intervals['kh'].sum()
      4 
      5 #print('\033[93m' + '\033[4m'+ '\033[1m' + 'Total kh =' + '\033[0m', GHZL_13 )

TypeError: list indices must be integers or slices, not str

错误原因

  1. intervals是列表类型,内部存储了多个小DataFrame,列表仅支持整数索引或切片访问元素,无法用字符串'kh'直接索引,这是触发TypeError的核心原因。
  2. 执行pd.concat(intervals)后未将合并结果赋值给变量,这行代码仅临时生成了合并后的DataFrame,但没有保存,后续仍在操作原始的列表intervals。

解决方案

将pd.concat(intervals)的合并结果保存为一个DataFrame变量,再对该变量的kh列执行求和操作。

修正后的代码

# 从csv读取top和bottom,生成对应区间的DataFrame
def get_interval(row):
   return df[(df['DEPTH']>=row['top']) & (df['DEPTH']<=row['bottom'])]

# 生成所有区间的DataFrame列表
intervals = list(perf.apply(get_interval, axis=1))
 
# 合并所有区间的DataFrame并保存到变量
combined_df = pd.concat(intervals)

# 计算kh列的总和
x = combined_df['kh'].sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:05:13