【问题标题】:Multiply numerical df with boolean df => result for False multiplication = np.nan instead of zero将数值 df 与布尔值 df => 结果相乘以得到 False 乘法 = np.nan 而不是零
【发布时间】:2020-06-30 15:15:57
【问题描述】:

当将数字 df 与布尔 df 相乘时,显然 True 用作 1,而 False 用作 0。我想将所有乘以 False 的值设置为 np.nan,以便它们与初始值中的 0 值不同数字df。初始数值 df 中的 NaN 值当然是 N​​aN 值。

期望的输出:

   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


    【解决方案1】:

    这应该可行

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 2022-10-01
      • 2019-11-21
      • 2016-01-13
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多