熊猫 - 计算中跳过无效的值



我需要将字段添加到我的数据框架中,并在位置A和位置B之间进行计算的距离。我有此代码,该代码适用于没有空坐标的字段:

df['Distance_AB'] = df.apply(lambda x: great_circle((x['latitude_A'],x['longitude_A']), (x['latitude_B'], x['longitude_B'])).meters, axis=1).round()

但是当它遇到空字段时,它会引发错误:

valueerror :('点坐标必须是有限的。(Nan,Nan,0.0) 被作为坐标传递。',在索引2881')

如何确保Great Circle距离的公式不会收到无效的值(如果没有可用的坐标,将跳过距离计算)?我知道pd.notnull()功能,但它返回TrueFalse

我假设您的函数 great_circle不可矢量,或者矢量化的范围不超出您的问题的范围。由于pd.DataFrame.apply已经是Python级循环,因此您可以使用try/except的显式功能,而无需大量其他开销:

def calculator(row):
    lat_A, long_A = row['latitude_A'], row['longitude_A']
    lat_B, long_B = row['latitude_B'], row['longitude_B']
    try:
        return great_circle((lat_A, long_A), (lat_B, long_B)).meters
    except ValueError:
        return np.nan
df['Distance_AB'] = df.apply(calculator, axis=1).round()

相关内容

  • 没有找到相关文章

最新更新