[英]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.