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

如何用Python(Pandas/CSV库)将XYZV CSV转换为XYV并求电压均值?

用Python处理CSV数据:按X、Y分组求Voltage平均值

方法一:使用Pandas(推荐,简洁高效)

Pandas的groupby+mean()组合可以快速实现需求,步骤清晰易维护:

import pandas as pd

# 读取原始CSV(根据实际分隔符调整参数:空格分隔用delim_whitespace=True,逗号分隔则去掉该参数)
df = pd.read_csv('data.csv', delim_whitespace=True)

# 按X、Y分组,计算Voltage(示例中为V列)的平均值
result_df = df.groupby(['X', 'Y'])['V'].mean().reset_index()

# 保留三位小数(匹配示例结果格式,可按需调整)
result_df['V'] = result_df['V'].round(3)

# 保存处理后的数据到新CSV
result_df.to_csv('processed_data.csv', index=False, sep='\t')

# 打印验证结果
print(result_df)

运行后会输出与示例一致的结果:

X    Y      V
0  1.0  0.0  5.333
1  1.0  1.0  1.000

方法二:使用Python标准库csv(无第三方依赖)

如果不想引入Pandas,可以用标准库手动实现分组统计:

import csv
from collections import defaultdict

# 用字典存储分组数据:键为(X,Y)元组,值为[总电压值, 数据计数]
group_stats = defaultdict(lambda: [0.0, 0])

# 读取原始CSV(分隔符按实际情况调整,示例为制表符)
with open('data.csv', 'r') as infile:
    reader = csv.DictReader(infile, delimiter='\t')
    for row in reader:
        x = float(row['X'])
        y = float(row['Y'])
        v = float(row['V'])
        key = (x, y)
        group_stats[key][0] += v
        group_stats[key][1] += 1

# 计算平均值并整理输出数据
output_data = [['X', 'Y', 'V']]
for (x, y), (total_v, count) in group_stats.items():
    avg_v = round(total_v / count, 3)
    output_data.append([x, y, avg_v])

# 写入处理后的CSV
with open('processed_data.csv', 'w', newline='') as outfile:
    writer = csv.writer(outfile, delimiter='\t')
    writer.writerows(output_data)

# 打印验证结果
for row in output_data[1:]:
    print(f"{row[0]}\t{row[1]}\t{row[2]}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:12:31