Python 如果另一列中的行满足条件,则填充nan

Python 如果另一列中的行满足条件,则填充nan,python,pandas,dataframe,null,Python,Pandas,Dataframe,Null,我有以下数据帧: df=pd.DataFrame({'state':['AL','WI','FL','NJ','BM'],'country':['USA','USA','','','']}) 如果相应的州行为以下州列表,我尝试将我的国家栏填写为“美国”: states = ['AL', 'WI', 'AZ', 'FL', 'NJ', 'CO', 'CT', 'NY'] 我审阅了以下相关SO帖子: 虽然问题类似,但我无法将apply函数用于我的案例,因为我不知道如何检查值列表中是否有其他列值

我有以下数据帧:

df=pd.DataFrame({'state':['AL','WI','FL','NJ','BM'],'country':['USA','USA','','','']})
如果相应的州行为以下州列表,我尝试将我的国家栏填写为“美国”:

states = ['AL', 'WI', 'AZ', 'FL', 'NJ', 'CO', 'CT', 'NY']
我审阅了以下相关SO帖子:

虽然问题类似,但我无法将apply函数用于我的案例,因为我不知道如何检查值列表中是否有其他列值。我尝试了以下(不成功)代码:


假设空格是
np.nan
,如果不是,您可以用
df=df.replace('',np.nan)
替换,以获得更快的结果:

df.country=np.where(df.state.isin(states),df.country.fillna('USA'),df.country)
print(df)

  state country
0    AL     USA
1    WI     USA
2    FL     USA
3    NJ     USA
4    BM     NaN

NaN
不能等同于任何东西,包括它本身。非常感谢。工作得很好。在我的实际数据中,我的国家只有空白。因此,在使用代码之前,我必须用df.country=df.country.replace(“”,np.NaN)填充缺少的数据。
df.country=np.where(df.state.isin(states),df.country.fillna('USA'),df.country)
print(df)

  state country
0    AL     USA
1    WI     USA
2    FL     USA
3    NJ     USA
4    BM     NaN