如果一行代码中存在“ NaN”值,则熊猫会合并列

时间:2019-07-15 03:34:52

标签: python-3.x pandas dataframe

我的数据集df如下:

time         high      low     offset
2017-01-01   1.012     0.921    NaN
2017-01-02   1.019     0.934    NaN 
2017-01-03   1.213     NaN      0.982
2017-01-04   1.112     0.965    NaN

在这里,low的值是NaNoffset的值是NaN,但两者都不是

我想创建一个名为low_offset_merge的新列

,以便low_offset_merge将包含lowoffset的合并值,并且都将具有number值而没有NaN,如下所示:

time         high      low     offset  low_offset_merge
2017-01-01   1.012     0.921    NaN       0.921
2017-01-02   1.019     0.934    NaN       0.934
2017-01-03   1.213     NaN      0.982     0.982
2017-01-04   1.112     0.965    NaN       0.965

我做了什么?

- First, check if `low` has `NaN` values and set the value     
df.loc[df['low'] != 'NaN', 'low_offset_merge'] = df['offset']

- Second, fill in the `NaN` column
df['low_offset_merge'] = df['low_offset_merge'].fillna(value=df['offset'])

我正在寻找一种解决方案,请您帮忙?

1 个答案:

答案 0 :(得分:1)

您最近一次尝试使用fillna的事情已经结束。您无需先检查NaN的值,只需用另一列中的值直接填充缺少的值即可:

df['low_offset_merge'] = df['low'].fillna(df['offset'])