首页 > 解决方案 > 有没有办法用数据框中另一列的值替换空值?

问题描述

我正在使用具有许多缺失值的数据框。我正在寻找替换缺失值的有效方法。以下是数据框的示例:

s/n     Name      Home_Zip      work_zip        Family_zip
 1      John      56729         N/A             836AB
 2      sawn      N/A           N/A             73836
 3      Michael   N/A          839CD            83093
 4      Nathan    93932        78393            N/a
 5      Jack      N/A          N/A              N/A

在这里,我想以Home_Zip一种首先查找的方式填充缺失值,work_zip如果它不为 null,则返回该值,否则返回family_zip. 如果在所有值都为 null 的情况下,则返回未知。

 s/n     Name      Home_Zip     work_zip        Family_zip
 1      John      56729         N/A              836AB
 2      sawn      73836         N/A              73836
 3      Michael   839CD         839CD            83093
 4      Nathan    93932         78393            N/a
 5      Jack      Unkown        N/A             N/A

标签: pythonpandasdataframe

解决方案


您可以使用bfill后跟fillna().

df['Home_Zip'] = df.iloc[:, 2:].bfill(1).fillna('Unknown')['Home_Zip']

或链几个fillna

df['Home_Zip'] = (df['Home_Zip'].fillna(df['work_zip'])
                     .fillna(df['Family_zip'])
                     .fillna('Unknown')
                 )

输出:

   s/n     Name Home_Zip work_zip Family_zip
0    1     John    56729      NaN      836AB
1    2     sawn    73836      NaN      73836
2    3  Michael    839CD    839CD      83093
3    4   Nathan    93932    78393        N/a
4    5     Jack  Unknown      NaN        NaN

推荐阅读