簡體   English   中英

如何讀取多個 csv 文件並將它們轉換為一個 3d dataframe

[英]How read multiple csv files and convert them to a 3d dataframe

我有多個 .csv 文件。 它們具有相同的列大小但行數不同。 我想制作一個 dataframe,其中第 3 個維度顯示每個文件。 我嘗試讀取每個文件並將其保存到 dataframe,然后 append 將它們保存到列表,但是當將列表轉換為 dataframe 時,output 是二維的 dataframe(如果我們有 5 個文件,則輸出是 (5, 1) 數據框)。

path = "Something"
filelist = os.listdir(Path)
print(filelist)
all_csv_files = []
for x in filelist:
    df = pd.read_csv(Path + "\\" + x)
    all_csv_files.append(df)

dataset = pd.DataFrame(all_csv_files)
dataset.shape

還嘗試讀取每個文件並將其保存到 numpy 數組並將它們堆疊(np.stack),但 arrays 的大小不同。 另外 pandas.Panel 已棄用。

例如,如果我們有 2 個 csv 文件,例如第一個文件是:

a,b,c,d
a,b,d,c
b,x,y,z

第二個是:

1,2,3,4
2,3,5,4

我想 output 是這樣的:

[
  [[a,b,c,d],[a,b,d,c],[a,x,y,z]],
  [[1,2,3,4],[2,3,5,4], [Nan, Nan, Nan, Nan]]
]

這是(2,3,4)。

我寧願不要填寫 Nan,但如果沒有辦法也可以。

如果您在所有 csv 文件中有相同的列,那么您可以嘗試下面的代碼。 我添加了 header=0 以便在閱讀 csv 后可以將第一行指定為列名。

import pandas as pd
import glob

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

您可以閱讀此 stackoverflow 問題( 將多個 csv 文件導入 pandas 並連接成一個 DataFrame )然后您可以輕松地死掉您的場景。

您可以使用 Asyncio 加速讀取所有 xyz.csv 文件

您可以為此使用 np.stack

path = "Something"
filelist = os.listdir(Path)
print(filelist)
all_csv_files = []
for x in filelist:
    df = pd.read_csv(Path + "\\" + x)
    dataset = np.stack((df, df))
dataset.shape

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM