【问题标题】:boolean mask on pandas dataframe with multiindex具有多索引的熊猫数据帧上的布尔掩码
【发布时间】:2018-04-18 02:07:34
【问题描述】:

我有一个包含多索引和多列的数据框:

>>> df = pd.DataFrame([['A1','B1',2,1],['A1','B2',1,3],['A2','B1',2,1]], columns=['key1','key2','val1','val2'])
>>> df.set_index(['key1','key2'], inplace=True)
>>> df

Out[276]: 
           val1  val2
key1 key2            
A1   B1       2     1
     B2       1     3
A2   B1       2     1

我还有一个布尔掩码,由 df 上方的单级 mutliindex 索引:

>>> mask = pd.DataFrame([['A1',True,False],['A2',False,True]], columns=['key1','val1','val2'])
>>> mask.set_index(['key1'], inplace=True)
>>> mask

Out[277]: 
       val1   val2
key1              
A1     True  False
A2    False   True

有没有简单的方法,如何在df 上应用布尔掩码?我只能应用具有相同形状和(多)索引结构的掩码...

期望的输出是:

              val1    val2
key1 key2            
A1   B1       2.0     NaN
     B2       1.0     NaN
A2   B1       NaN     1.0

有什么线索吗?谢谢。

【问题讨论】:

    标签: python pandas dataframe boolean mask


    【解决方案1】:

    尝试使用DataFrame.where()方法:

    In [453]: df.where(mask)
    Out[453]:
               val1  val2
    key1 key2
    A1   B1     2.0   NaN
         B2     1.0   NaN
    A2   B1     NaN   1.0
    

    【讨论】:

      猜你喜欢
      • 2020-08-22
      • 2018-01-13
      • 2013-01-17
      • 2021-03-19
      • 2017-02-23
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      相关资源
      最近更新 更多