我使用存储在pandas数据帧列中的地址作为函数的参数,调用Google Maps API并将结果存储在同一数据帧中名为address_components的列中
dm.loc[: , 'address_components'] = dm.loc[:, ['streetNumber', 'streetName', 'city']].apply(
lambda row: get_address(row[0], row[1], row[2]), axis=1)
整个数据帧非常大,我想在符合特定条件的部分数据帧上运行相同的函数。我试过这个:
dm[dm['g_FSA'] == 'None'].loc[: , 'address_components'] = dm[dm['g_FSA'] == 'None'].loc[:, ['streetNumber', 'streetName', 'city']].apply(
lambda row: get_address(row[0], row[1], row[2]), axis=1)
但这并不正常。有人能帮我找出错误吗?
使用Series.eq
创建布尔掩码,然后将此掩码与DataFrame.loc
一起用于选择特定的行和列,然后使用DataFrame.apply
应用自定义函数:
m = dm['g_FSA'].eq('None')
dm.loc[m, 'address_components'] = (
dm.loc[m, ['streetNumber', 'streetName', 'city']]
.apply(lambda s: get_address(*s), axis=1)
)