繁体   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