Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据布尔条件选择行和列_Python_Pandas_Dataframe_Conditional - Fatal编程技术网

Python 根据布尔条件选择行和列

Python 根据布尔条件选择行和列,python,pandas,dataframe,conditional,Python,Pandas,Dataframe,Conditional,我有一个大约50列>100行的熊猫数据框。我想选择列'col\u x','col\u y'其中'col\u z'

我有一个大约50列>100行的熊猫数据框。我想选择列
'col\u x'
'col\u y'
其中
'col\u z'
。有没有一种简单的方法可以做到这一点,类似于
df[df['col3']
df['colx','coly']]
但是结合起来了?

让我们来分析一下你的问题。你想

  • 基于某些布尔条件筛选行
  • 您希望从结果中选择列的子集
  • 对于第一点,您需要的条件是-

    df["col_z"] < m
    
    您将如何结合这两种方法来生产熊猫的预期产量?最直接的方法是使用-

    loc允许您指定用于选择行的索引标签。例如,如果您有一个数据帧-

       col_x  col_y
    a      1      4
    b      2      5
    c      3      6
    
    要选择索引
    a
    ,和
    c
    ,以及
    col\u x
    ,您将使用-

    df.loc[['a', 'c'], ['col_x']]
    
       col_x
    a      1
    c      3
    
    或者,通过布尔条件进行选择(如原始问题所述,使用一系列的
    bool
    值),其中
    col_x
    中的所有值都是奇数-

    df.loc[(df.col_x % 2).ne(0), ['col_y']]
    
       col_y
    a      4
    c      6
    
    有关详细信息,
    df.col_x%2
    计算每个值相对于
    2
    的模数。
    ne(0)
    然后将该值与
    0
    进行比较,如果不是,则返回
    True
    (所有奇数都是这样选择的)。下面是这个表达式的结果-

    (df.col_x % 2).ne(0)
    
    a     True
    b    False
    c     True
    Name: col_x, dtype: bool
    

    进一步阅读

    df.loc[['a', 'c'], ['col_x']]
    
       col_x
    a      1
    c      3
    
    df.loc[(df.col_x % 2).ne(0), ['col_y']]
    
       col_y
    a      4
    c      6
    
    (df.col_x % 2).ne(0)
    
    a     True
    b    False
    c     True
    Name: col_x, dtype: bool