繁体   English   中英

将多个csv文件导入到串联的数据框中,并在数据框中附加每列

[英]Importing multiple csv files into a concatenated dataframe with each column appended in the dataframe

我有很多如下的csv文件:

file_1.csv

name  num
Ab     8
Dd     9
Cc     20
Kk     69

file_2.csv

name  num
Ab    23
Dd    3
Kk    20
Jj    30

依此类推...现在,您看到第一个csv中可能没有出现,但其他csv中却出现了一个名称。

现在,我主要关心的是将它们全部合并在一个数据帧中(连接在一起),如下所示: big_df

name num num2 num3....numN
 Ab   8    23   ...
 Dd   9     3   ...

其中N是num列的csv文件数


我挖了一些寻找解决方案,这就是我得到的:

path = 'E:\\my_path\\**\\*.csv'
all_rec = iglob(path, recursive = True)
dataframes = (pd.read_csv(f, sep = ';', skiprows = 1, header = None) for f in all_rec)
big_df = pd.concat(dataframes, ignore_index = True)

真的不适合我。

获取所需的文件列表。 我不知道该目录中是否还有其他.csv文件,因此请根据需要进行修改。

此处的关键是要将name设置为索引,这样pd.concat可以在连接数据DataFrames时使用它来对齐数据DataFrames 您可以使用regex获取文件编号,然后将其附加到列名称中。

import os
import re
import pandas as pd

path = 'define_your_path'
files = [x for x in os.listdir(path) if '.csv' in x]
#['file_1.csv', 'file_2.csv']

lst = []
for f in files:
    lst.append(pd.read_csv(path+f)
                 .set_index('name')
                 .add_suffix(re.search('.*_(.*)\.', f).group(1)))

big_df = pd.concat(lst, axis=1, sort=False)

输出: big_df

    num1  num2
Ab   8.0  23.0
Dd   9.0   3.0
Cc  20.0   NaN
Kk  69.0  20.0
Jj   NaN  30.0

输入数据:

file_1.csv:

name,num
Ab,8
Dd,9
Cc,20
Kk,69

file_2.csv:

name,num
Ab,23
Dd,3
Kk,20
Jj,30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM