我有一个包含 2 列的 DataFrame(20k 行),如果第一列(纬度)行条目为 NaN,我想更新。我想使用下面的代码,因为它可能是一种快速的方法,但我不确定如何更新此行
msk = [isinstance(row, float) for row in df['latitude'].tolist()]
以获取仅 NaN 的行。我正在检查的纬度列是浮动的,因此这行代码返回所有行。
def boolean_mask_loop(df):
msk = [isinstance(row, float) for row in df['latitude'].tolist()]
out = []
for target in df.loc[msk, 'address'].tolist():
dict_temp = geocoding(target)
out.append([dict_temp['lat'], dict_temp['long']])
df.loc[msk, ['latitude', 'longitude']] = out
return df
id | 地址 | 纬度 | 经度 |
---|---|---|---|
1 | 地址1 | NaN | NaN |
2 | 地址2 | NaN | NaN |
3 | 地址3 | 40.7526 | -74.0016 |
我将这行代码
msk = [isinstance(row, float) for row in df['latitude'].tolist()]
修改为 msk = df['latitude'].isnull().tolist()
,它本质上标识了我想要更新的纬度列中具有 NaN 值的那些行。感谢@Anerdw 的建议。