Pandas Dataframe 仅将lambda应用于 Dataframe 中的选定行(基于条件)

tuwxkamq  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(131)

在下面的代码行中,我尝试将lambda公式仅应用于基于某个条件的选定行。我不希望将该公式应用于数据集中的每一行。代码看起来工作正常,但我收到一条警告:“SettingWithCopyWarning:一个值正试图被设置在一个切片的副本从一个数据框”(不知道为什么?),所以我不知道这是否是正确的方式做它?此外,如果有一个更有效/更容易的方式,我会很感激让我知道它。谢谢。
我基本上是想说如果列GlobalName = ''那么应用lambda(它有自己的if语句)

df['GlobalName'][df['GlobalName']==''] = df['IsPerson'].apply(lambda x: x if x==True else '')
avwztpqn

avwztpqn1#

根据文档,正确的表示法似乎是=左边的是:

df.GlobalName[df.loc[:, 'GlobalName'].eq('')]

试试看你能不能收到警告

gpnt7bae

gpnt7bae2#

更新:此解决方案有效:

df['GlobalName'] = np.where(df['GlobalName']=='', df['IsPerson'].apply(lambda x: x if x==True else ''), df['GlobalName'])

相关问题