Pandas使用apply()只在部分数据帧上运行函数



我使用存储在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)
)

最新更新