有两列UserID和country。在国家/地区的某些行中有值,但在其他行中有相同UserID的nan值。我想在nan的价值观中映射出国家的价值。
UserID Country
1 India
2 US
3 Uk
1 nan
4 nan
2 nan
4 nan
所需输出:
UserID Country
1 India
2 US
3 Uk
1 India
4 nan
2 US
4 nan
我试着这样做:
df['Country']=df['UserID'].map(lambda x:df[x])
但是我收到了UserID 4的错误。我尝试手动替换UserID 4的国家/地区:
df['Country']=np.where(df['UserID']==4,'India',df['Country'])
但我还是犯了一个错误。出了什么问题,或者有其他方法可以解决吗?
通过groupby()
和ffill()
:尝试
df['Country']=df.groupby('UserID')['Country'].ffill()
或
通过groupby()
和fillna()
:
df['Country']=df.groupby('UserID')['Country'].fillna(method='ffill')