我有两列company_size
和company_type
。 company_size
包含我要基于company_type
列填充的NaN值。如何映射到特定值,以便可以填充NaN值,即基于company_size
的{{1}}中的缺失值。
示例数据:
company_type
现在基于company_type,我想填写company_size。
company_size company_type
10-50 startup
1000+ PvtLtd
NaN Public Sector
NaN PvtLtd
100-500 Public Sector
NaN startup
100-500 Public Sector
请注意,company_type和company_size都是类别变量。
答案 0 :(得分:3)
您可以先按公司规模排序,以确保NaN
位于结尾,然后使用groupby
和ffill
,然后再次按索引排序以恢复原始状态订单:
df.sort_values('company_size').groupby('company_type').ffill().sort_index()
company_size company_type
0 10-50 startup
1 1000+ PvtLtd
2 100-500 Public Sector
3 1000+ PvtLtd
4 100-500 Public Sector
5 10-50 startup
6 100-500 Public Sector
答案 1 :(得分:3)
groupby
您的公司时间,以及 transform('first')
以摆脱NaN值:
df['company_size'] = df.groupby("company_type")["company_size"].transform("first")
company_size company_type
0 10-50 startup
1 1000+ PvtLtd
2 100-500 PublicSector
3 1000+ PvtLtd
4 100-500 PublicSector
5 10-50 startup
6 100-500 PublicSector