我试图写一个基本的程序来连接一个文件夹中的一堆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,
1条答案
按热度按时间omqzjyyz1#
读取每个csv文件时,使用
index_col=False
代替index_col=None
应该可以解决问题: