鉴于此,我有一个数据集,如下所示:
dict = {
"A": [math.nan,math.nan,1,math.nan,2,math.nan,3,5],
"B": np.random.randint(1,5,size=8)
}
dt = pd.DataFrame(dict)
我最喜欢的输出是,如果in列A
中有一个Nan,则将同一行中的B
列的值乘以Nan
。因此,鉴于此,以下是我的数据集:
A B
NaN 1
NaN 1
1.0 3
NaN 2
2.0 3
NaN 1
3.0 1
5.0 3
我最喜欢的输出是:
A B
2 1
2 1
1 3
4 2
2 3
2 1
3 1
5 3
我当前的解决方法如下,该方法不起作用:
dt[pd.isna(dt["A"])]["A"] = dt[pd.isna(dt["A"])]["B"].apply( lambda x:2*x )
print(dt)
答案 0 :(得分:1)
在您使用fillna
的情况下
df.A.fillna(df.B*2, inplace=True)
df
A B
0 2.0 1
1 2.0 1
2 1.0 3
3 4.0 2
4 2.0 3
5 2.0 1
6 3.0 1
7 5.0 3