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