【问题标题】:Concatenation of multiple .csv files not giving required result on python多个.csv文件的连接在python上没有给出所需的结果
【发布时间】:2021-05-26 09:19:36
【问题描述】:

我总共有 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

【问题讨论】:

    标签: python pandas csv operating-system glob


    【解决方案1】:

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

    【讨论】:

    • 谢谢header=None 运行良好,因为我的数据没有为其列分配实际名称。干杯
    猜你喜欢
    • 1970-01-01
    • 2015-03-04
    • 2013-10-14
    • 1970-01-01
    • 2020-04-04
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多