Python如何将DataFrame导出为无末尾空值和多余逗号的CSV文件
问题根因
拆分Col3时,pandas会按拆分后元素最多的行自动补全列数,元素不足的行填充NaN,导出CSV时这些空值就会生成末尾的多余逗号和空字段。
解决方法
方法1:不修改现有预处理逻辑,替换导出代码即可
import csv import pandas as pd with open('data.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) for _, row in df.iterrows(): # 过滤掉当前行的空值后写入 valid_row = [val for val in row if pd.notna(val)] writer.writerow(valid_row)
方法2:优化预处理逻辑,更高效实现需求
你可以直接在分组阶段生成目标格式的内容,不需要拆成多列再删列:
import csv import pandas as pd # 分组后直接将Col3内容拆分为列表 output_rows = df.groupby(['Col1', 'Col2'])['Col3'].apply( lambda x: ','.join(x).split(',') ).tolist() # 直接写入CSV with open('data.csv', 'w', newline='', encoding='utf-8') as f: csv.writer(f).writerows(output_rows)
两种方法生成的CSV都不会有末尾多余的逗号和空值,完全符合预期输出效果。
内容的提问来源于stack exchange,提问作者d98p
相关产品推荐
相关产品推荐

