pandas调用to_csv()报错不识别startrow参数如何解决
报错根因
pandas 的 to_csv() 方法本身没有 startrow 入参,该参数仅适用于Excel写入工具 pd.ExcelWriter,传入不存在的参数就会触发类型错误。
需求实现方案
你的核心需求是不覆盖目标文件example1.csv的前29行已有数据,从第30行开始写入净销售额数据,按两种常见使用场景选择对应方案即可:
- 场景1:需保留目标文件前29行的全部原有内容,仅从第30行开始追加新数据
import pandas as pd def mokacsv(file_name): # 读取源文件的净销售额列,转DataFrame格式方便后续拼接 source_df = pd.read_csv(file_name) new_data = source_df[['Net Sales']] # 读取目标文件现有前29行内容(行索引从0开始,nrows=29对应前29行) old_data = pd.read_csv('example1.csv', nrows=29) # 拼接原有内容和新内容,新内容自动排在第30行及之后 final_data = pd.concat([old_data, new_data], ignore_index=True) # 写入完整数据到目标文件,覆盖原有文件 final_data.to_csv('example1.csv', index=False, header=True) mokacsv(r"example2.csv")
- 场景2:仅需空出前29行,不需要保留原有内容,第30行开始写新数据
import pandas as pd def mokacsv(file_name): source_df = pd.read_csv(file_name) new_data = source_df[['Net Sales']] # 先写入29行空内容占位 with open('example1.csv', 'w', encoding='utf-8') as f: f.write('\n' * 29) # 追加模式写入新数据,mode='a'表示追加不会覆盖原有内容 new_data.to_csv('example1.csv', mode='a', index=False, header=True) mokacsv(r"example2.csv")
补充说明
你原代码中sum_of_netsales = (column_netsales)没有执行求和逻辑,如果你的需求是计算净销售额总和后再写入,可以将new_data的赋值逻辑替换为:
sum_value = source_df['Net Sales'].sum() new_data = pd.DataFrame({'Net Sales 总和': [sum_value]})
另外你原代码末尾的print(mokacsv(...))不会输出内容,因为函数没有return返回值,直接调用函数即可。
内容的提问来源于stack exchange,提问作者Mirkyly
相关产品推荐
相关产品推荐

