如何将值从一列映射到数据框的另一列?

时间:2018-07-19 18:18:43

标签: python pandas

我有两列company_sizecompany_typecompany_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都是类别变量。

2 个答案:

答案 0 :(得分:3)

您可以先按公司规模排序,以确保NaN位于结尾,然后使用groupbyffill,然后再次按索引排序以恢复原始状态订单:

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