【问题标题】:Adding file name in a Column while merging multible csv files to pandas- Python在将多个csv文件合并到pandas-Python时在列中添加文件名
【发布时间】:2017-03-27 11:59:20
【问题描述】:

我在同一个文件夹中有多个 csv 文件,它们的数据列都相同,

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 文件合并到 pandas 中,并在每一行中添加一个包含文件名的列,以便稍后跟踪它的来源。似乎有类似的线程,但我无法调整任何解决方案。这就是我到目前为止所拥有的。将数据合并到一个数据框中有效,但我卡在添加文件名列上,

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_)

【问题讨论】:

    标签: python csv


    【解决方案1】:

    不要使用列表,而是使用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)
    

    【讨论】:

    • 谢谢。这就是我一直在寻找的。完美!
    • 很高兴我的回答对您有所帮助,请接受它,因为它解决了您的问题。如果您认为这是一个很好的答案,也可以投票。
    • 是的,我确实赞成。但这是我在这里的第一篇文章,显然我的选票还没有计算在内......
    • 是的,我应该意识到,这里有一个特权列表,确实参考了:stackoverflow.com/help/privileges
    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 2017-06-10
    • 2017-08-03
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多