Python Pandas-处理CSV文件的文件夹并输出最终组合的CSV
我正在尝试读取一个文件夹中的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
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))