【发布时间】:2020-06-30 15:15:57
【问题描述】:
当将数字 df 与布尔 df 相乘时,显然 True 用作 1,而 False 用作 0。我想将所有乘以 False 的值设置为 np.nan,以便它们与初始值中的 0 值不同数字df。初始数值 df 中的 NaN 值当然是 NaN 值。
期望的输出:
a b c
NaN 0.0 3.0
0.0 NaN NaN
9.0 NaN NaN
NaN 3.0 NaN
代码:
import pandas as pd
import numpy as np
df = pd.DataFrame({"a": [4,0,9,3],
"b": [0,7,np.nan,3],
"c": [3,7,np.nan,3]})
boolean = pd.DataFrame({"a": [False,True,True,False],
"b": [True,False,True,True],
"c": [True,False,False,False]})
output = df.mul(boolean)
print(output)
a b c
0.0 0.0 3.0
0.0 0.0 0.0
9.0 NaN NaN
0.0 3.0 0.0 => initial df zeros and zeros after boolean multiplication are mixed up
【问题讨论】:
标签: python pandas boolean product