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

Pandas遍历行计算差值并输出时间+结果及CSV写入问题

问题分析与解决

你的代码核心问题是在iterrows()循环中错误地获取了整列数据,而非当前行的单个值,导致输出的是整个Series而非每行的对应结果,写入CSV时也因数据结构错误触发元组异常。

修正方案1:正确使用iterrows()遍历每行

直接在循环中提取当前行的time和计算差值,逐行输出:

for index, row in df.iterrows():
    current_time = row['time']
    diff_value = row['data_01'] - row['data_02']
    print(f"{current_time} {diff_value}")

运行后会得到你需要的格式:

01:00 3
02:00 4

修正方案2:用Pandas向量化操作(推荐,效率更高)

Pandas的优势是向量化计算,避免低效的行循环,先计算差值列再处理输出和写入:

  1. 新增差值列:
df['diff'] = df['data_01'] - df['data_02']
  1. 按要求格式输出:
# 方式1:循环输出
for _, row in df.iterrows():
    print(f"{row['time']} {row['diff']}")

# 方式2:无循环快速输出
print('\n'.join([f"{t} {d}" for t, d in zip(df['time'], df['diff'])]))
  1. 写入CSV/文本文件:
    如果要将结果保存为文件,直接用to_csv方法,指定需要的列和格式:
# 保存为CSV(逗号分隔)
df[['time', 'diff']].to_csv('result.csv', index=False, header=False)

# 保存为空格分隔的文本文件(和输出格式一致)
df[['time', 'diff']].to_csv('result.txt', index=False, header=False, sep=' ')

原代码错误原因

  • time = df['time']和data = df['data_01'] - df['data_02']每次循环都获取整个列的所有数据,而非当前行的单个值,最终print输出的是两个Pandas Series对象,导致内容分开显示。
  • 写入CSV时,若直接传入这两个Series,会因数据结构不匹配(to_csv需要DataFrame或合适的二维结构)触发元组错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:10:09