Python Pandas-处理CSV文件的文件夹并输出最终组合的CSV

Python Pandas-处理CSV文件的文件夹并输出最终组合的CSV,python,pandas,Python,Pandas,我正在尝试读取一个文件夹中的CSV文件,逐个处理它们以删除重复项,然后将它们添加到主数据框中,最后将其输出到CSV。我有这个 import pandas as pd import os import sys output = pd.DataFrame(columns=['col1', 'col2']) for root, dirs, files in os.walk("sourcefolder", topdown=False): for name in file

我正在尝试读取一个文件夹中的CSV文件,逐个处理它们以删除重复项,然后将它们添加到主数据框中,最后将其输出到CSV。我有这个

import pandas as pd
import os
import sys

output = pd.DataFrame(columns=['col1', 'col2'])

for root, dirs, files in os.walk("sourcefolder", topdown=False):

    for name in files:

        data = pd.read_csv(os.path.join(root, name), usecols=[1], skiprows=1)
        output.append(data)

output.to_csv("output.csv", index=False, encoding='utf8')

但是我的输出CSV是空的,除了列名。有人知道我哪里出错了吗?

熊猫数据帧的行为不像列表,所以你不能像那样使用append试试:

import pandas as pd
import os
import sys

output = pd.DataFrame(columns=['col1', 'col2'])

for root, dirs, files in os.walk("sourcefolder", topdown=False):

    for name in files:

        data = pd.read_csv(os.path.join(root, name), usecols=[1], skiprows=1)
        output = output.append(data)

output_df.to_csv("output.csv", index=False, encoding='utf8')

或者,您可以使输出成为一个数据帧列表,然后使用pd.concat在最后创建一个合并的数据帧,这取决于数据量,这可能会更有效。

因为数据帧不像列表,所以您不能像那样使用append尝试:

import pandas as pd
import os
import sys

output = pd.DataFrame(columns=['col1', 'col2'])

for root, dirs, files in os.walk("sourcefolder", topdown=False):

    for name in files:

        data = pd.read_csv(os.path.join(root, name), usecols=[1], skiprows=1)
        output = output.append(data)

output_df.to_csv("output.csv", index=False, encoding='utf8')

或者,您可以使输出成为一个数据帧列表,然后使用pd.concat在最后创建一个合并的数据帧,这取决于数据量,这可能会更有效

内置的pandas方法concat也很好


内置的concat方法也很不错


如果您的文件夹正确,请尝试:
output=output.append(data)
@DeepSpace如果您所说的列表是正确的,但输出是一个数据帧,因此结果是两个帧添加在一起。不要附加到数据帧,请使用concat。合并或更新,将其视为数据库。如果您改为设置
output=[]
然后追加到它,然后调用
pd.concat(pd.DataFrame(output))
如果您的文件夹正确,请尝试:
output=output.append(data)
@DeepSpace如果您所说的列表是正确的,但输出是一个数据帧,因此结果是两个帧相加。不要附加到数据帧,请使用concat。合并或更新,将其视为数据库。如果您改为设置
output=[]
然后追加到它,然后调用
pd.concat(pd.DataFrame(output))