gpt4 book ai didi

python - 将多个 csv 文件读入 Pandas Data Frame

转载 作者:太空狗 更新时间:2023-10-30 02:37:23 26 4
gpt4 key购买 nike

我正在尝试将多个 CSV 文件读取到 Pandas 数据框中。 CSV 不是逗号分隔的 - 字段由分号“;”分隔。

我的代码基于答案 here .

我的数据都在一个特定的子目录中:/data/luftdaten/5331

这是我运行的:

import glob
import pandas as pd

path =r'data/luftdaten/5331' # use your path

filenames = glob.glob(path + "/*.csv")
count_files = 0
dfs = []
for filename in filenames:
if count_files ==0:
dfs.append(pd.read_csv(filename, sep=";"))
count_files += 1
else:
dfs.append(pd.read_csv(filename, sep=";", skiprows=[0]))
count_files +=1

big_frame = pd.concat(dfs, ignore_index=True)

我使用 count_files 来监控它是否是第一个 CSV - 在这种情况下我导入标题。否则,它会跳过 header 。

代码执行正常。

如果我用该目录中的单个文件运行它,一切都很好:

big_frame.info()

输出:

RangeIndex: 146 entries, 0 to 145Data columns (**total 12 column**s):sensor_id      146 non-null int64sensor_type    146 non-null objectetc......

如果我用目录中的 2 个或更多文件运行它,从一开始就会出错。

输出 4 个文件:

RangeIndex: 1893 entries, 0 to 1892Data columns (total **33 columns**):-2.077                 1164 non-null float64-2.130                 145 non-null float642.40                   145 non-null float64

在单个 CSV 版本上运行 big_frame.head() 给出了这个,并带有正确的列名:

output from importing single CSV

当运行相同的导入四个文件时,我得到了这个:

output from importing 4 CSV files (cropped right)

有没有明显的我正在做的事情不仅导致行数增加而且列数也增加?

非常感谢您的指导!

最佳答案

它目前不起作用的原因是,当您在第一个文件之后为每个文件执行 skiprows=[0] 时,新数据框的第二行(索引 1)用作列标题。因此,当连接帧时,会有很多不匹配的列标题。如果您删除 skiprows=[0],它应该可以工作。

假设您的所有文件都具有相同的 header (或者当它们不同时您可以使用 NaN),您应该能够在一行中执行此操作:

big_frame = pd.concat([pd.read_csv(f, sep=';') for f in glob.glob(path + "/*.csv")],
ignore_index=True)

关于python - 将多个 csv 文件读入 Pandas Data Frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50351908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com