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

Pandas using apply() to run the function only on part of the dataframe

我使用存储在 pandas 数据框列中的地址作为函数的参数来调用 Google 地图 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, then use this mask along with DataFrame.loc 创建一个布尔掩码到 select 特定的行和列,然后使用 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)
)