Python 使用导致内存错误的嵌套循环分配
我正在使用pandas,并尝试使用嵌套循环来完成作业。我迭代一个数据帧,然后运行一个距离函数,如果它满足某个条件。我面临两个问题:Python 使用导致内存错误的嵌套循环分配,python,pandas,nested,Python,Pandas,Nested,我正在使用pandas,并尝试使用嵌套循环来完成作业。我迭代一个数据帧,然后运行一个距离函数,如果它满足某个条件。我面临两个问题: 使用CopyWarning设置: 试图在数据帧切片的副本上设置值 内存错误。它不适用于大型数据集。我最终不得不终止这个过程 我应该如何更改我的解决方案以确保它可以扩展到60000行的更大数据集 for i, row in df.iterrows(): listy = 0 school = [] if row['LS_Type'] == 'Pr
for i, row in df.iterrows():
listy = 0
school = []
if row['LS_Type'] == 'Primary (1-4)':
a = row['Northing']
b = row['Easting']
LS_ID = row['LS_ID']
for j, row2 in df.iterrows():
if row2['LS_Type'] == 'Primary (1-8)':
dist_km = distance(a,b, df.Northing[j], df.Easting[j])
if (listy == 0):
listy = dist_km
school.append([df.LS_Name[j], df.LS_ID[j]])
else:
if dist_km < listy:
listy = dist_km
school[0] = [df.LS_Name[j], int(df.LS_ID[j])]
df['dist_up_prim'][i] = listy
df["closest_up_prim"][i] = school[0]
else:
df['dist_up_prim'][i] = 0
df.iterrows()中的i行的:
listy=0
学校=[]
如果行['LS_Type']='Primary(1-4)':
a=行['Northing']
b=行['Easting']
LS_ID=行['LS_ID']
对于j,df.iterrows()中的第2行:
如果第2行['LS_Type']=='Primary(1-8)':
距离公里=距离(a、b、测向北[j]、测向东[j])
如果(listy==0):
listy=距离公里
school.append([df.LS_Name[j],df.LS_ID[j]]))
其他:
如果距离公里<列表:
listy=距离公里
学校[0]=[df.LS\u Name[j],int(df.LS\u ID[j])]
df['dist\u up\u prim'][i]=listy
df[“最接近的”][i]=学校[0]
其他:
df['dist\u up\u prim'][i]=0
双for循环是让你在这里丧命的原因。看看是否可以将其分为两个单独的应用步骤
下面是一个使用df.apply()
和partial
执行嵌套for循环的玩具示例:
import math
import pandas as pd
from functools import partial
df = pd.DataFrame.from_dict({'A': [1, 2, 3, 4, 5, 6, 7, 8],
'B': [1, 2, 3, 4, 5, 6, 7, 8]})
def myOtherFunc(row):
if row['A'] <= 4:
return row['B']*row['A']
def myFunc(the_df, row):
if row['A'] <= 2:
other_B = the_df.apply(myOtherFunc, axis=1)
return other_B.mean()
return pd.np.NaN
apply_myFunc_on_df = partial(myFunc, df)
df.apply(apply_myFunc_on_df, axis=1)
导入数学
作为pd进口熊猫
从functools导入部分
df=pd.DataFrame.from_dict({'A':[1,2,3,4,5,6,7,8],
‘B’:[1,2,3,4,5,6,7,8]})
def myOtherFunc(世界其他地区):
如果行['A'],通常应使用df.apply函数,如果使用ItErrors。。。停下来,做点别的。我下面的回答帮你解决这个问题了吗?