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

时间:2018-10-01 17:50:36

标签: python pandas csv dataframe data-analysis

我有很多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)

不是很适合我。

1 个答案:

答案 0 :(得分:0)

根据需要获取文件列表。我不知道该目录中是否还有其他Path = apache2/php.ini 个文件,请根据需要进行修改。

此处的关键是您希望将.csv设置为索引,这样name将在您加入pd.concat时将其对齐。您可以使用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

输入数据:

file_1.csv:

    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_2.csv:

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