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

遍历DataFrame计算统计量写CSV触发'float' object is not subscriptable报错

问题根源

触发报错的直接原因:你尝试对单个浮点数执行下标索引操作(skewVal[0]/kurtVal[0])

  • scipy.stats 模块的 skew() 和 kurtosis() 函数,当输入为一维数据序列(比如你代码中dfxz[i]指代的DataFrame单列数据)时,返回值是单个浮点型数值,而非数组/列表
  • 浮点数本身不支持下标访问(即不能被“subscriptable”),因此触发TypeError
  • 你此前将DataFrame原始值从float转int的操作完全不相关——错误出在计算结果的取值逻辑,而非输入数据的类型
修复方案

核心修改:移除冗余的下标索引

去掉skewVal和kurtVal后的[0],直接使用计算得到的单值。

优化:避免重复IO操作(可选但更规范)

原代码在循环内反复打开/关闭CSV文件,效率低且易出现文件句柄异常,建议改为循环外统一打开文件。

修正后可运行的代码示例
import numpy as np
from scipy.stats import skew, kurtosis

# 循环外统一打开文件,自动管理句柄
with open('tabel.csv', 'a', newline='', encoding='utf-8') as csv:
    # 规范遍历DataFrame的所有列
    for col_name in dfxz.columns:
        col_data = dfxz[col_name]
        # 计算统计值
        mean_val = np.mean(col_data)
        variance_val = np.var(col_data)
        skew_val = skew(col_data)
        kurt_val = kurtosis(col_data)
        
        # 直接写入单值(无下标)
        csv.write(f"{mean_val},{variance_val},{skew_val},{kurt_val},1\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 07:15:02