熊猫DataFrame沿新轴连接

时间:2020-05-28 13:52:49

标签: python 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)

这给了我一个形状为[线,线的内容]的数据框,但是我再也看不到该线来自哪个文件。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

您可以创建所有文件名的列表,并在列表中带有扩展名,然后将其传递到concat中的参数keys,这样就创建了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())

答案 1 :(得分:0)

与jezrael的解决方案相比,它花费了很多时间,但这是我使用了很长时间了。不过,现在应该使它更简洁了。

os.chdir('C:/')
file_list = []
for file in os.listdir():
    df = pd.read_csv(file)
    df['Filename'] = file
    file_list.append(df)
    df = pd.concat(file_list, ignore_index=True)