DataFrame 与 NaN 的条件乘法

问题描述 投票:0回答:1

我有两个数据框

A=

0 1 2
0 0.5 0
0.1 0 0.2
0.2 0 0

和 B =

0
1.0
1.0
NaN

我需要将 A 的每一行按元素 B 相乘,但我需要完成计算,以便仅当 A 的原始元素为 0 时,结果数据帧才显示 NaN。

如果我这样做

A * B.transpose()

我明白了

0 1 2
0 0.5 NaN
0.1 0 NaN
0.2 0 NaN

但我需要它

0 1 2
0 0.5 NaN
0.1 0 0.2
0.2 0 NaN
import pandas as pd

A = pd.DataFrame([[0, 0.5, 0], 
                  [0.1, 0, 0.2], 
                  [0.2, 0, 0]])

B = pd.DataFrame([1, 1, np.NaN])
python pandas nan
1个回答
0
投票

IIUC你可以尝试:

out = A * B.T.values
out[out.isna() & ~A.eq(0)] = A

print(out)

打印:

     0    1    2
0  0.0  0.5  NaN
1  0.1  0.0  0.2
2  0.2  0.0  NaN
© www.soinside.com 2019 - 2024. All rights reserved.