首页 > 解决方案 > 多个.csv文件的连接在python上没有给出所需的结果

问题描述

我总共有 24 个 .csv 文件,每个文件有 3 列和许多行(准确地说是 15677 行,在这 24 个文件中拆分),其中包含我需要读取的数据。我想按时间顺序访问和读取这些数据文件。起初我试图连接这些文件,但由于某种原因,我得到了一个具有 [15653 行 x 72 列] 但实际上它应该是 [15677 行 x 3 列] 的矩阵(因为所有 .csv 文件都有 3 列,当您将包含的数据行总计为 15677)。

这是我到目前为止所做的事情,这让我得到了我提到的结果:

import glob
import os
import pandas as pd 
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "media/BIWI/*.csv"))))
print(df)

正在使用的文件:https ://drive.google.com/drive/folders/19z-OcHRXmTO8VX-Bj8NuOJGJROURLJwt?usp=sharing

标签: pythonpandascsvoperating-systemglob

解决方案


当您在pd.read_csv()不提供列名的情况下使用时,csv 文件的第一行将用作列标题。这样,您将丢失 24 行,剩下 15677-24 = 15653 行。由于生成的 DataFrame 具有不同名称的列,因此pd.concat()会生成一个包含所有这些列(以及许多NaN值)的 DataFrame。这占 72=3*24 列。要解决此问题,您可以使用pd.read_csv()withnames参数并将列名列表分配给它。或者,您可以使用pd.read_csv()withheader=None来指示 csv 文件没有标题行。


推荐阅读