首页 > 解决方案 > 在导入许多文件时将列添加到具有部分文件名的熊猫数据框

问题描述

我用它从目录中的许多文件中创建一个巨大的数据框:

path = r'C:\\Users\\me\\data\\'              
all_files = glob.glob(os.path.join(path, "*"))

df_from_each_file = (pd.read_csv(f, sep='\t') for f in all_files)
concatdf = pd.concat(df_from_each_file, ignore_index=True)

该路径中的文件具有如下名称

AAA.etc.etc.
AAA.etc.etc
BBB.etc.etc.

当我导入每个文件时,我想在从该文件导入的所有行具有AAABBB旁边的数据框中添加一列,如下所示:

col1  col2  col3
data1 data2 AAA
data3 data4 AAA
data1 data2 AAA
data3 data4 AAA
data1 data2 BBB
data3 data4 BBB

标签: pythonpandas

解决方案


这是一种方法:

from pathlib import PureWindowsPath

def fn_helper(fn):
    df = pd.read_csv(fn, sep='\t')
    p = PureWindowsPath(fn)
    part = p.name.split('.')[0]
    df['col3'] = part
    return df

df_from_each_file = (fn_helper(f) for f in all_files)
...

或者正如其他人用单行显示的那样:

(pd.read_csv(f, sep='\t').assign(col3=PureWindowsPath(f).name.split('.')[0]) for f in all_files)

推荐阅读