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