【问题标题】:get index of boolean values in pandas - python获取熊猫中布尔值的索引 - python
【发布时间】:2017-08-25 22:09:06
【问题描述】:
a=pd.DataFrame({'a1':[1,2,3,4],'a2':[5,6,7,8]})
c=pd.DataFrame({'c1':[True,False,True,True],'c2':[True,False,False,True]})

如何获取a1a2 列中元素的索引,这两个列分别是Truec1c2

a1 的索引应该是[0,2,3]a2 的索引[0,3]。结果可能是一个索引列表,如[[0,2,3],[0,3]]

【问题讨论】:

    标签: python pandas indexing boolean


    【解决方案1】:

    不清楚你到底想要什么。

    这是一种使用stack的方法

    a.stack().index[c.stack().values].to_series()
    
    0  a1    (0, a1)
       a2    (0, a2)
    2  a1    (2, a1)
    3  a1    (3, a1)
       a2    (3, a2)
    dtype: object
    

    如果您只想要索引值列表

    a.index.values[c.values.any(1)]
    
    array([0, 2, 3])
    

    【讨论】:

      【解决方案2】:

      我觉得你需要where:

      c.columns = a.columns
      df1 = a.where(c)
      idx = [df1[x].dropna().index.tolist() for x in df1]
      print (idx)
      [[0, 2, 3], [0, 3]]
      

      另一种解决方案:

      c.columns = a.columns
      idx = list(a.where(c).stack().reset_index()
                  .groupby('level_1')['level_0'].apply(list))
      print (idx)
      [[0, 2, 3], [0, 3]]
      

      【讨论】:

      • 感谢您的回答。有没有办法做到这一点而不必明确指定每一列?我的数据框有很多列,如 a1、a2、a3 等。
      猜你喜欢
      • 1970-01-01
      • 2018-01-13
      • 2021-05-17
      • 2021-03-19
      • 2017-09-16
      • 1970-01-01
      • 2017-02-27
      • 2021-01-19
      • 2022-07-25
      相关资源
      最近更新 更多