簡體   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