我在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 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
那么,我如何更改代码才能获得该代码?
答案 0 :(得分: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)
答案 1 :(得分:1)
您可以使用converter参数动态更改或格式化值。如果一个列不存在,我不确定是否会附加一个列,但你可以尝试一下:
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)}))