Pandas数据框仅将lambda应用于数据框内的选定行(基于条件)

时间:2019-12-05 04:47:42

标签: python pandas dataframe

在下面的代码行中,我尝试根据条件将lambda公式仅应用于选定的行。我不希望公式适用于数据集中的每一行。代码似乎正常工作,但是我收到一条警告,内容为“ SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值”(不确定为什么吗?),所以我不确定这是否是正确的方法吗?另外,如果有一种更有效/更简便的方法,我将不胜感激。谢谢。

我基本上是想说一列GlobalName =''THEN是否应用lambda(它具有自己的if语句)

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

2 个答案:

答案 0 :(得分:0)

根据文档,似乎正确的符号是=的左边是:

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

也许尝试一下,看看是否收到警告

答案 1 :(得分:0)

更新:此解决方案有效:

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