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

Python读取data.txt计算列均值、标准差报错求解

问题解决:计算表格列统计量的代码修正

错误原因

你代码里的df = [input_filename]把df定义成了包含文件名的列表,而不是能处理结构化表格数据的pandas DataFrame。列表只能用整数/切片索引,用字符串suit索引自然会触发TypeError。

修正方案

用pandas库读取文本文件并计算统计量是最简洁的方式,步骤如下:

1. 安装pandas(如果未安装)

在命令行执行:

pip install pandas

2. 完整修正代码

import os
import pandas as pd

rootPathin = r"C:\Python"
rootPathout = r"C:\Python"

case = "data.txt"

input_filename = os.path.join(rootPathin, case)
output_filename = os.path.join(rootPathout, "mean.txt")

# 读取空格分隔的文本文件,自动识别表头
df = pd.read_csv(input_filename, sep='\s+')

# 计算每列的均值和标准差,可添加更多统计量如min/max/median
column_stats = df.agg(['mean', 'std']).round(4)  # 保留4位小数

# 将结果写入输出文件
with open(output_filename, 'w') as output_file:
    output_file.write("各列统计量(均值/标准差):\n")
    output_file.write(column_stats.to_string())

# 控制台打印结果
print("各列统计量:")
print(column_stats)

代码说明

  • pd.read_csv(input_filename, sep='\s+'):读取空格分隔的文本文件,自动将第一行识别为列名(Time、suit等),生成可处理的DataFrame结构。
  • df.agg(['mean', 'std']):对所有列同时计算均值和标准差,若需要更多统计量,只需在列表中添加min、max、median等关键词。
  • round(4):将统计结果保留4位小数,避免冗余小数位。
  • to_string():把DataFrame转换成字符串格式,方便写入文本文件。

运行结果

执行后,mean.txt里的内容会是:

各列统计量(均值/标准差):
           Time   suit  helmet  golves  boots
mean   3.7500  3.5000   3.7500   6.5000  6.2500
std    2.2174  2.3805   1.7078   1.2910  1.8929

控制台也会打印相同的统计结果,完全满足你计算各列统计量的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:35