将数值 df 与布尔 df 相乘 => 错误乘法的结果 = np.nan 而不是零
Multiply numerical df with boolean df => result for False multiplication = np.nan instead of zero
将数值 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
这应该有效
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]})
boolean[boolean==0]=np.nan
output = df.mul(boolean)
print(output)
将数值 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
这应该有效
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]})
boolean[boolean==0]=np.nan
output = df.mul(boolean)
print(output)