2017-03-27 134 views
1

我有相同的所有数据列在同一文件夹多个CSV文件,一列中添加文件名,而合并multible CSV文件pandas- Python的

20100104 080100;5369;5378.5;5365;5378;2368 
20100104 080200;5378;5385;5377;5384.5;652 
20100104 080300;5384.5;5391.5;5383;5390;457 
20100104 080400;5390.5;5391;5387;5389.5;392 

我要合并的CSV文件导入大熊猫并在每一行中添加一个包含文件名的列,以便我可以跟踪它后来的来源。似乎有类似的线索,但我无法适应任何解决方案。这是我迄今为止所拥有的。将数据合并到一个数据帧的作品,但我卡上添加文件名栏,而不是使用一个列表的

import os 
import glob 
import pandas as pd 


path = r'/filepath/'      
all_files = glob.glob(os.path.join(path, "*.csv")) 
names = [os.path.basename(x) for x in glob.glob(path+'\*.csv')] 

list_ = [] 
for file_ in all_files: 
    list_.append(pd.read_csv(file_,sep=';', parse_dates=[0], infer_datetime_format=True,header=None)) 

df = pd.concat(list_) 

回答

2

只使用DataFrame's append

df = pd.DataFrame() 
for file_ in all_files: 
    file_df = pd.read_csv(file_,sep=';', parse_dates=[0], infer_datetime_format=True,header=None) 
    file_df['file_name'] = file_ 
    df = df.append(file_df) 
+0

谢谢你。那正是我正在寻找的。完善! – Trembles

+0

我很高兴我的答案有帮助,请接受它,因为它解决了您的问题。如果你认为这是一个很好的答案,也可以加快它的速度。 –

+0

是的,我确实赞成它。但这是我在这里的第一篇文章,显然我的选票还没有统计到...... – Trembles