用NaN合并列

时间:2018-06-21 18:50:06

标签: python pandas

我正在尝试清理熊猫中的一个非常大的数据框。

我有标记为currentAge,currentAge2,sex,sex2,height,height2,weight,weight2的列。对于某些行,有一个currentAge值,而对于其他行,有currentNge2的NaN。它也可以采用另一种方式,即对于某些行,currentAge2有一个值,currentAge有NaN。其他指标(性别,体重和身高)也是如此。

我想将诸如currentAge和currentAge2之类的通用指标合并在一起,以使一列currentAge没有NaN。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您需要使用fillna。让我们考虑一下这个数据帧,其中一些年龄位于currentAge列中,而另一个存在于currentAge2中:

df = pd.DataFrame({'currentAge':[np.nan, 12, 15, 16, np.nan], 
                   'currentAge2':[8, np.nan, np.nan, np.nan, 24]})
   currentAge  currentAge2
0         NaN          8.0
1        12.0          NaN
2        15.0          NaN
3        16.0          NaN
4         NaN         24.0

然后您可以做的是:df['currentAge'] = df['currentAge'].fillna(df['currentAge2'])用第二列中的值填充第一列中的所有nan,然后得到:

   currentAge  currentAge2
0         8.0          8.0
1        12.0          NaN
2        15.0          NaN
3        16.0          NaN
4        24.0         24.0

要删除列currentAge2,然后执行df = df.drop('currentAge2',1),您将填充一个简单列currentAge。