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

使用Pandas计算CSV新增列失败求助:基于incidentcountlevel1与examcount

修复Pandas脚本并生成新列的解决方案

看起来你的脚本里有几个明显的问题导致运行失败,我来帮你一步步梳理和修复:

先说说你当前脚本的问题

  • 重复读取同一个CSV文件到df、df1、df3,完全没必要,而且df3的文件路径是截断的(/home/corp_sourcing/Metric_Fact_20180324_12...),这会直接触发文件找不到的错误。
  • 没有明确写出你要基于incidentcountlevel1和examcount计算新列的具体逻辑,脚本自然无法完成你的目标。

修复后的完整脚本示例

假设你的需求是生成两个新列(你可以根据实际需求替换计算逻辑):

  1. incident_exam_ratio:incidentcountlevel1与examcount的比率(处理除零避免报错)
  2. incident_exam_diff:incidentcountlevel1与examcount的差值

以下是修复后的代码:

import pandas as pd
import numpy as np

# 只需要读取一次CSV文件即可
df = pd.read_csv(r"/home/corp_sourcing/Metric_Fact_20180324_1227.csv", header='infer', skiprows=[1])

# 先确保两列是数值类型(如果CSV里是字符串格式的数值)
df['incidentcountlevel1'] = pd.to_numeric(df['incidentcountlevel1'], errors='coerce')
df['examcount'] = pd.to_numeric(df['examcount'], errors='coerce')

# 计算第一个新列:比率,处理除零的情况(分母为0时设为NaN或者你想要的默认值)
df['incident_exam_ratio'] = np.where(df['examcount'] != 0, df['incidentcountlevel1'] / df['examcount'], np.nan)

# 计算第二个新列:差值
df['incident_exam_diff'] = df['incidentcountlevel1'] - df['examcount']

# 查看前几行结果验证
print(df[['incidentcountlevel1', 'examcount', 'incident_exam_ratio', 'incident_exam_diff']].head())

# 保存到新的CSV文件(可选)
df.to_csv(r"/home/corp_sourcing/Metric_Fact_With_New_Cols.csv", index=False)

额外注意事项

  • 如果你的新列计算逻辑不是上面的例子,只需要替换df['新列名'] = ...这部分的代码即可。
  • 确认skiprows=[1]的逻辑是否正确:这会跳过CSV的第二行,如果你是想跳过表头之外的无效行,要确保CSV结构匹配。
  • 如果运行仍报错,检查这几点:文件路径是否完全正确、列名是否和CSV里的完全一致(大小写、空格都要匹配)、数据里是否有非数值内容导致类型转换失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:40:01