如何使用Python Pandas计算CSV文件每行中列表的均值并输出结果到CSV
使用Pandas计算CSV中列表的均值并输出结果
这是个很常见的CSV嵌套数据处理需求,用Pandas搭配NumPy就能完美解决,我把解决方案梳理得更清晰实用:
完整可运行代码
import pandas as pd import numpy as np from ast import literal_eval # 读取目标CSV文件 filename = "xy.csv" df = pd.read_csv(filename, usecols=['X', 'Y'], quotechar='"', sep=',', low_memory=True) # 定义辅助函数:将字符串列表转为实际列表并计算均值 def compute_list_average(column): # 把CSV里的字符串格式列表转为Python原生列表 parsed_col = column.apply(literal_eval) # 对每个列表计算均值 return parsed_col.apply(np.mean) # 为X、Y列分别计算均值,新增列存储结果 df['X_mean'] = compute_list_average(df['X']) df['Y_mean'] = compute_list_average(df['Y']) # 情况1:保存带原数据+均值的CSV(推荐,方便后续处理) df.to_csv("xy_with_means.csv", index=False) # 情况2:保存你需要的「原列表 < 均值」格式的CSV df['X_display'] = df['X'] + " < " + df['X_mean'].astype(str) df['Y_display'] = df['Y'] + " < " + df['Y_mean'].astype(str) df[['X_display', 'Y_display']].to_csv("xy_formatted.csv", index=False, header=['X', 'Y'])
关键步骤解释
- 读取CSV文件:
pd.read_csv里的usecols指定只加载需要的X、Y列,quotechar和sep确保正确解析带方括号的列表字符串,避免解析错误。 - 解析列表字符串:
用literal_eval替代eval,安全地把CSV中类似"[2,3,4]"的字符串转换成真正的Python列表,避免恶意代码执行风险。 - 计算均值:
借助np.mean高效计算每个列表的均值,比手动遍历求和再除以长度更简洁高效。 - 输出结果:
- 推荐保存「原数据+均值」的格式,方便后续数据分析;
- 如果需要你描述的显示格式,通过字符串拼接生成新列后再保存即可。
如果你想直接覆盖原列(就像你找到的代码那样),可以把df['X_mean'] = ...改成df['X'] = compute_list_average(df['X']),但保留原数据的方式更灵活哦。
内容的提问来源于stack exchange,提问作者NewBee
相关产品推荐
相关产品推荐

