Python 查找数据帧中具有二进制值的可用值列表

Python 查找数据帧中具有二进制值的可用值列表,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,如下所示: session p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 0 1 1 0 0 1 1 0 1 0 1 0 1 2 1 0 0 0 1 0 1 0 1 1 2 3 1 0 1 0 1 0 0 0 1 0 3 4 0 1 1 1

我有一个
数据帧
,如下所示:

   session  p1  p2  p3  p4  p5  p6  p7  p8  p9  p10
0        1   1   0   0   1   1   0   1   0   1    0
1        2   1   0   0   0   1   0   1   0   1    1
2        3   1   0   1   0   1   0   0   0   1    0
3        4   0   1   1   1   0   1   0   1   0    0
4        5   1   1   0   0   1   0   1   1   1    1
5        6   0   0   1   0   1   1   0   1   0    0
6        7   1   1   0   1   0   1   0   0   1    0
7        8   1   0   0   0   1   0   1   1   1    1
8        9   0   1   1   0   1   0   1   0   0    0
9       10   1   1   0   1   0   1   0   1   1    0
我有如下列表值

listvals = ['p1','p5','p9']
我想要的是得到

  • 包含所有列表值的“会话”编号
  • “会话”编号,其中至少包含两个列表值
  • 剩余的“会话”编号
  • 仍然找不到它。

    假设“包含所有列表值”,您的意思是对应的列为1:

    >>> df.session[df[listvals].sum(axis=1) == len(listvals)]
    0    1
    1    2
    2    3
    4    5 
    7    8
    Name: session, dtype: int64
    >>> df.session[df[listvals].sum(axis=1) >= 2]
    0     1
    1     2
    2     3
    4     5
    6     7
    7     8
    9    10
    Name: session, dtype: int64
    >>> df.session[df[listvals].sum(axis=1) <= 1]
    3    4
    5    6
    8    9
    Name: session, dtype: int64
    
    >df.session[df[listvals].sum(axis=1)=len(listvals)]
    0    1
    1    2
    2    3
    4    5 
    7    8
    名称:会话,数据类型:int64
    >>>会话[df[listvals].sum(轴=1)>=2]
    0     1
    1     2
    2     3
    4     5
    6     7
    7     8
    9    10
    名称:会话,数据类型:int64
    
    >>>session[df[listvals].sum(axis=1):非常感谢您的解释!效果很好!