gpt4 book ai didi

python - 在 Python Pandas 中连接大量 CSV 文件(30,000)

转载 作者:太空狗 更新时间:2023-10-30 02:18:53 38 4
gpt4 key购买 nike

我正在使用以下函数连接大量 CSV 文件:

def concatenate():
files = sort() # input is an array of filenames
merged = pd.DataFrame()
for file in files:
print "concatinating" + file
if file.endswith('FulltimeSimpleOpt.csv'): # only consider those filenames
filenamearray = file.split("_")
f = pd.read_csv(file, index_col=0)
f.loc[:,'Vehicle'] = filenamearray[0].replace("veh", "")
f.loc[:,'Year'] = filenamearray[1].replace("year", "")
if "timelimit" in file:
f.loc[:,'Timelimit'] = "1"
else:
f.loc[:,'Timelimit'] = "0"
merged = pd.concat([merged, f], axis=0)
merged.to_csv('merged.csv')

此函数的问题在于它不能很好地处理大量文件 (30,000)。我尝试使用 100 个正确完成的文件样本。但是,对于 30,000 个文件,脚本会变慢并在某些时候崩溃。

如何在 Python Pandas 中更好地处理大量文件?

最佳答案

先做一个dfs列表,再拼接:

def concatenate():
files = sort() # input is an array of filenames
df_list =[]
#merged = pd.DataFrame()
for file in files:
print "concatinating" + file
if file.endswith('FulltimeSimpleOpt.csv'): # only consider those filenames
filenamearray = file.split("_")
f = pd.read_csv(file, index_col=0)
f.loc[:,'Vehicle'] = filenamearray[0].replace("veh", "")
f.loc[:,'Year'] = filenamearray[1].replace("year", "")
if "timelimit" in file:
f.loc[:,'Timelimit'] = "1"
else:
f.loc[:,'Timelimit'] = "0"
df_list.append(f)
merged = pd.concat(df_list, axis=0)
merged.to_csv('merged.csv')

你正在做的是通过重复连接逐渐增加你的 df,最好是制作一个 df 列表,然后一次性连接所有的 df

关于python - 在 Python Pandas 中连接大量 CSV 文件(30,000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33608968/

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