合并多个CSV到Pandas DataFrame结果异常,如何正确处理?
问题原因
你的CSV文件没有表头,但代码中使用了header=0参数,这会让pandas把每个CSV的第一行数据当成列名:
- 1.csv的第一行
1,1被识别为列名1和1.1(重复列名自动重命名) - 2.csv的第一行
6,1被识别为列名6和1
合并时pandas会按列名对齐,就出现了列错位、NaN值的异常结果。
修正方案
读取CSV时指定header=None(告诉pandas文件无表头,自动生成默认列名),合并后保存时去掉索引和默认表头:
import pandas as pd import glob # 读取所有CSV文件,指定无表头 files = glob.glob("data/*.csv") df_list = [] for f in files: csv_df = pd.read_csv(f, header=None, index_col=None) df_list.append(csv_df) # 合并DataFrame combined_df = pd.concat(df_list, axis=0, ignore_index=True) # 保存为CSV,不写索引和表头 combined_df.to_csv("all.csv", index=False, header=False) print(combined_df)
验证结果
执行后生成的all.csv内容会和你期望的一致:
1,1 2,1 3,1 4,1 5,1 6,1 7,1 8,1 9,1
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

