我有两个数据框
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])
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