除非列B的值为NaN,否则如何用列B的值替换列A的所有值?

时间:2019-08-27 13:47:50

标签: python pandas numpy

给出以下数据框:

wd = wd.rstrip(b'\n')

我想用ColB的值替换ColA的值,但是我从不希望NaN值替换非NaN的值。我想要的输出是以下DataFrame:

import numpy as np
import pandas as pd

df = pd.DataFrame({"ColA": [1, 2, np.nan, 4, np.nan],
                   "ColB": [np.nan, 7, np.nan, 9, 10]})

   ColA  ColB
0   1.0   NaN
1   2.0   7.0
2   NaN   NaN
3   4.0   9.0
4   NaN  10.0

我的实际数据很大,所以虽然我知道可以逐行进行迭代,但我正在寻找一种更有效的方法。

1 个答案:

答案 0 :(得分:1)

df['ColA']= np.where(df['ColA'].notna(), np.where(df['ColB'].isna(),df['ColA'],df['ColB']), df['ColA'])