我有多个.csv文件。它们具有相同的列大小,但行数不同。我想制作一个第三维显示每个文件的数据框。我尝试读取每个文件并将其保存到数据框,然后将它们附加到列表,但是当将列表转换为数据框时,输出为二维数据框(如果我们有5个文件,则puth为(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),但是数组的大小不同。 还有pandas。不建议使用面板。
例如,如果我们有2个csv文件,例如第一个,则为:
a,b,c,d
a,b,d,c
b,x,y,z
第二个是:
1,2,3,4
2,3,5,4
我想输出为:
[
[[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,但如果没有办法也可以。
答案 0 :(得分:0)
如果所有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问题(Import multiple csv files into pandas and concatenate into one DataFrame),然后轻松解决问题。
您可以使用Asyncio加快读取所有xyz.csv文件的速度