【问题标题】:Get list of column names for columns that contain negative values获取包含负值的列的列名列表
【发布时间】:2016-01-22 00:57:57
【问题描述】:

这是一个简单的问题,但我发现“切片”DataFramesPandas 中令人沮丧,来自 R

我在下面有一个DataFrame df 7 列:

df
Out[77]: 
     fld1  fld2  fld3  fld4  fld5  fld6  fld7
0     8     8    -1     2     1     7     4
1     6     6     1     7     5    -1     3
2     2     5     4     2     2     8     1
3    -1    -1     7     2     3     2     0
4     6     6     4     2     0     5     2
5    -1     5     7     1     5     8     2
6     7     1    -1     0     1     8     1
7     6     2     4     1     2     6     1
8     3     4     4     5     8    -1     4
9     4     4     3     7     7     4     5

如何对df 进行切片,使其生成包含至少一个负数的列列表?

【问题讨论】:

    标签: python python-2.7 pandas


    【解决方案1】:

    您可以通过构建适当的系列来选择它们,然后使用它来索引df

    >>> df < 0
        fld1   fld2   fld3   fld4   fld5   fld6   fld7
    0  False  False   True  False  False  False  False
    1  False  False  False  False  False   True  False
    2  False  False  False  False  False  False  False
    3   True   True  False  False  False  False  False
    4  False  False  False  False  False  False  False
    5   True  False  False  False  False  False  False
    6  False  False   True  False  False  False  False
    7  False  False  False  False  False  False  False
    8  False  False  False  False  False   True  False
    9  False  False  False  False  False  False  False
    >>> (df < 0).any()
    fld1     True
    fld2     True
    fld3     True
    fld4    False
    fld5    False
    fld6     True
    fld7    False
    dtype: bool
    

    然后

    >>> df.columns[(df < 0).any()]
    Index(['fld1', 'fld2', 'fld3', 'fld6'], dtype='object')
    

    >>> df.columns[(df < 0).any()].tolist()
    ['fld1', 'fld2', 'fld3', 'fld6']
    

    取决于你想要什么数据结构。我们也可以直接使用这个io索引到df

    >>> df.loc[:,(df < 0).any()]
       fld1  fld2  fld3  fld6
    0     8     8    -1     7
    1     6     6     1    -1
    2     2     5     4     8
    3    -1    -1     7     2
    4     6     6     4     5
    5    -1     5     7     8
    6     7     1    -1     8
    7     6     2     4     6
    8     3     4     4    -1
    9     4     4     3     4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 2011-03-29
      • 2012-02-24
      • 2022-01-07
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多