问题描述
我有几个文件夹,每个文件夹包含几个CSV文件,这些文件具有大量的行和列。我正在尝试将CSV文件中的某些列连接到JSON文件。当我的代码通过100个以下CSV文件的文件夹时,我的代码运行良好。如果我尝试提交的文件超过100个,则代码会变得非常缓慢,并且在添加几个文件后卡住了。
我创建了具有4个数据框的模拟数据,这些数据框复制了我的原始数据:
import pandas as pd
import numpy as np
import glob
data_1 = {'host_identity_verified':['t','t','t'],'neighbourhood':['q','q','q'],'neighbourhood_cleansed':['Oostelijk Havengebied - Indische Buurt','Centrum-Oost','Centrum-West','Oostelijk Havengebied - Indische Buurt','Centrum-West'],'neighbourhood_group_cleansed': ['NaN','NaN','NaN'],'latitude':[ 52.36575,52.36509,52.37297,52.38761,52.36719,52.36575,52.36719]}
data_2 = {'host_identity_verified':['t','neighbourhood':['w','w','w'],52.36719]}
data_3 = {'host_identity_verified':['t','neighbourhood':['NaN','Chicago,US',US'],52.36719]}
data_4 = {'host_identity_verified':['t',52.36719]}
df_1 = pd.DataFrame(data_1)
df_2 = pd.DataFrame(data_2)
df_3 = pd.DataFrame(data_3)
df_4 = pd.DataFrame(data_4)
df_list_1 = []
df_list_2 = []
df_list_3 = []
df_list_4 = []
df_list_1.append(df_1)
df_list_2.append(df_2)
df_list_3.append(df_3)
df_list_4.append(df_4)
df_all = df_list_1 + df_list_2 + df_list_3 +df_list_4
count = 0
li = []
for df in df_all:
count = count +1
print(count)
if count < 3:
df_n = df
li.append(df_n)
frame_1 = pd.concat(li,axis=0,ignore_index= True)
def Get_Columns(file_name):
return file_name[['host_identity_verified','latitude']]
concat_data_1 = Get_Columns(frame_1)
with open('Booking_Data_%s.json' % count,'w') as outfile:
concat_data_j_1 = concat_data_1.to_json()
outfile.write(concat_data_j_1)
如您所见,为了获得x个要串联并保存到JASON文件中的文件,我将不得不通过编写许多elif语句来手动执行此操作。我的文件夹中的文件少于900个,因此我必须编写19种条件才能将每个50个CSV文件保存到JSON文件中。
因此,我想缩短代码长度,并在每次计数器达到20的倍数时自动将输出保存到新的JSON文件中。将前20个保存在文件中,然后将20保存在文件中,依此类推。
例如,我的文件夹中有58个文件。如果我想将每20个文件保存在一个JSON文件中,则必须有3个JSON文件,前2个具有20 CSV,最后一个具有18 CSV。
此外,由于JSON文件太大,我将在分析它们时遇到问题吗?这是保存大数据的最佳文件类型吗?我们正在谈论的是每个文件中将近百万行,如果不是更多,则具有数百MB的大小。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)