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