首页 > 解决方案 > Pandas DataFrame 沿新轴连接

问题描述

我有一个包含 1000 多个 csv 文件的目录,我想将其读取并存储在数据框中,然后将其保存到文件中。我希望数据框尺寸为[文件,文件中的行,行的内容]。到目前为止,这是我想出的:

import pandas as pd
import glob

csv_files = glob.glob("data/*sample.csv")
df = (pd.read_csv(f) for f in csv_files)
dataset = pd.concat(df, ignore_index=True)

这给了我一个形状为 [line, content of line] 的数据框,但我无法再看到该行来自哪个文件。有人可以在这里帮助我吗?

标签: pythonpandasdataframe

解决方案


您可以在 list 中创建所有带有我们扩展名的文件名的列表,然后将其传递给keysin参数concat,这样MultiIndex就创建了。最后删除第二级并将其转换为索引:

from os.path import splitext, basename

csv_files = glob.glob("data/*sample.csv")
names = (splitext(basename(x))[0] for x in csv_files)
dfs = (pd.read_csv(f) for f in csv_files)

df = (pd.concat(dfs, keys=names)
        .reset_index(level=1, drop=True)
        .rename_axis('New')
        .reset_index())

推荐阅读