繁体   English   中英

Pandas DataFrame 沿新轴连接

[英]Pandas DataFrame concatenate along new axis

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

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)

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

您可以在 list 中创建具有我们扩展名的所有文件名的列表,然后将其传递给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())

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM