如何合并多个CSV文件并创建带MultiIndex的Pandas DataFrame
Pandas合并CSV文件并添加文件名作为外层索引
嘿,你已经搞定了CSV文件的匹配工作,接下来只需要给pd.concat()加个小参数就能轻松实现你的需求啦!
修改后的完整代码
import pandas as pd import glob # 匹配文件夹中的csv文件 extension = 'csv' all_filenames = [i for i in glob.glob('*.{}'.format(extension))] # 合并时传入keys参数,关联文件名作为外层索引 combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames], keys=all_filenames)
关键说明
- 这里的
keys=all_filenames会把每个CSV文件名对应到它读取后的DataFrame,合并后的结果会生成两层索引:外层是你要的文件名,内层是每个CSV原本的行索引。 - 之后你就可以直接用
combined_csv.loc['Book1.csv']快速定位到对应文件的所有数据,完全符合你的需求!
进阶优化(可选)
如果你想让索引的含义更清晰,还可以给两层索引添加自定义名称:
combined_csv = pd.concat( [pd.read_csv(f) for f in all_filenames], keys=all_filenames, names=['Source_File', 'Original_Row_Index'] # 给索引命名,提升可读性 )
这样后续查看或操作索引时,能更直观地知道每个层级代表的含义。
内容的提问来源于stack exchange,提问作者rpb
相关产品推荐
相关产品推荐

