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