如何使用Python Pandas批量读取并合并指定名称的CSV文件
批量读取并合并CSV文件的简便方案
你目前逐个读取文件的方式确实繁琐,这里给你两种高效且简洁的解决方案,完全不用手动处理每个文件:
方法一:列表推导式 + pd.concat()
这是最直接的批量处理方式,用列表推导式一次性读取所有目标文件,再合并成一个DataFrame:
import pandas as pd # 你的目标CSV文件列表 csv_names = ['drive_1.csv', 'drive_2.csv', 'drive_3.csv', 'drive_4.csv'] # 批量读取所有文件到DataFrame列表 df_collection = [pd.read_csv(file_path, sep=';', header=None) for file_path in csv_names] # 合并所有DataFrame,ignore_index重置索引避免重复 merged_df = pd.concat(df_collection, ignore_index=True)
- 推荐加上
ignore_index=True:它会重新生成连续的索引,避免多个文件的索引重叠导致的混乱。
方法二:用glob动态匹配+合并(更灵活)
如果你的文件是通过文件名规则筛选的,还可以直接用glob模块自动匹配文件,省去手动生成csv_names的步骤:
import pandas as pd from glob import glob # 匹配所有名称包含'drive'的CSV文件(通配符*匹配任意字符) target_files = glob('*drive*.csv') # 读取并合并一步完成 merged_df = pd.concat( [pd.read_csv(file, sep=';', header=None) for file in target_files], ignore_index=True )
额外小提示
如果后续遇到CSV文件结构不一致的情况,可以在pd.concat()中添加join='inner'参数,只保留所有文件共有的列;如果需要指定读取特定列,可以在pd.read_csv()里用usecols参数,比如usecols=[0,2,3]只读取第1、3、4列。
内容的提问来源于stack exchange,提问作者Monkey D
相关产品推荐
相关产品推荐

