python-3.x 使用Pandas连接文件夹中的所有csv文件并删除前导逗号

ckx4rj1h  于 2023-03-04  发布在  Python
关注(0)|答案(1)|浏览(156)

我试图写一个基本的程序来连接一个文件夹中的一堆csv文件,成为一个单一的文件。希望列标题只显示一次。所有的文件都以相同的方式排列列数和标题。问题是,输出文件以','开始,因此推动标题跨越1列。所有的数据看起来很好。
下面是我尝试使用的:

import pandas as pd
import glob
from tkinter.filedialog import askdirectory

path = askdirectory() + '/'
files = glob.glob("*.csv")
all_files = [path + f for f in files]

flist = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    flist.append(df)

df_out = pd.concat(flist, axis=0, ignore_index=False)

df_out.to_csv("output.csv")

它会给予一个输出.csv,如下所示:

,DATE,PM2.5,PM10,CO2,TEMPERATURE,HUMIDITY
2023-02-20 10:01:13,6.4,7.1,920,18.8,78.8,
2023-02-20 10:02:13,6.4,7.5,911,18.9,78.7,
2023-02-20 10:03:13,5.5,6.4,901,19.1,78.0,
2023-02-20 10:04:13,5.8,6.7,889,19.3,77.3,

我确信我误解了如何处理concat参数,但是再多的尝试似乎也无法解决这个问题。如果我使用ignore_index=True,它只是将日期列更改为索引行号。有什么办法可以解决这个问题吗?
EDIT:输入的csv如下所示:

DATE,PM2.5,PM10,CO2,TEMPERATURE,HUMIDITY
2023-02-20 10:01:13,006.4,007.1,920,018.8,078.8,
2023-02-20 10:02:13,006.4,007.5,911,018.9,078.7,
2023-02-20 10:03:13,005.5,006.4,901,019.1,078.0,
2023-02-20 10:04:13,005.8,006.7,889,019.3,077.3,
omqzjyyz

omqzjyyz1#

读取每个csv文件时,使用index_col=False代替index_col=None应该可以解决问题:

flist = []
for filename in all_files:
    df = pd.read_csv(filename, index_col=False)  # <- HERE
    flist.append(df)

df_out = pd.concat(flist, axis=0, ignore_index=False)
df_out.to_csv("output.csv")

相关问题