用所有行中每个CSV的名称附加多个CSV

2024-03-28 08:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了这段代码,它附加了位于同一个文件中的多个csv。工作正常。你知道吗

import os
import pandas as pd

targetdir = r'E:/Base 2015-1/Carreras'

filelist = os.listdir(targetdir) 

big_df=pd.DataFrame()

for filename in filelist:
    big_df = big_df.append(pd.read_csv(os.path.join(targetdir, filename), header= None),ignore_index=True)

但是,我想在输出中创建一个列,列的名称是CSV,每一行在追加之前都来自CSV。例如:

CSV File: A1
1 2 3
a b 3

CSV File: A2
2 4 1
a e r

Append:
1 2 3 A1
a b 3 A1
2 4 1 A2
a e r A2

那么,我该如何修改代码才能得到它呢?你知道吗


Tags: 文件csv代码importa2dfosa1
2条回答

我测试了以下内容是否符合您的要求:

# from for loop onward... 
for filename in filelist:
    tmpdf = pd.read_csv(os.path.join(targetdir, filename),sep=' ',header=None)
    tmpdf[len(tmpdf.columns)] = filename # add column with filename 
    bigdf = pd.concat([bigdf,tmpdf],ignore_index=True)

可以使用converters参数动态更改或格式化值。我不确定如果一个列不存在,是否会附加一个列,但您可以尝试一下:

def file_converter(file_number):
    # This can be made more complicated if you want A..Z
    return 'A{0}'.format(file_number)

for file_number, filename in enumerate(filelist):
    file_path = os.path.join(targetdir, filename)
    # Modify the 4th column contents
    big_df = big_df.append(pd.read_csv(file_path, converters={3:file_converter(file_number)}))

相关问题 更多 >