【问题标题】:Return dataframe with values in a particular range for all columns返回所有列的特定范围内的值的数据框
【发布时间】:2020-03-13 04:39:55
【问题描述】:

如何返回所有列的值都在特定范围内的数据框。我的数据框目前的结构如下:

     California    Texas    New York ...
     200000        151000   900000
     50000         160000   250000
     75000         120000   171000
       .              .        .
       .              .        .
       .              .        .

如何为所有列返回一个包含 150000-200000 范围内值的新数据框

【问题讨论】:

标签: python pandas


【解决方案1】:

我希望这可能是您的解决方案:

df['California'].between(150000, 200000, inclusive=False)

这里,inclusive 决定是否要包含边缘。 True 等于 <=>=False 表示<>

【讨论】:

  • 不,我正在寻找一个考虑所有列的解决方案。
【解决方案2】:
>>> df
     0    1    2    3    4
0   33  131   52  122   40
1  235  146   36    4   97
2   90  227   49   49   58
3  192   61  127  220  254
4  124  234  238  215   34
5   86    3  220  105  129
6   59  234  189  193  190
7  116  131   95   89  102
8   72   90  253  167  203
9   21  111  203   55  118

定义条件/标准

>>> gt = df > 100
>>> lt = df < 150
>>> mask = np.logical_and(lt,gt)

如果有任何列满足条件,请使用.any(axis=1)

>>> mask.any(1)
0     True
1     True
2    False
3     True
4     True
5     True
6    False
7     True
8    False
9     True
dtype: bool
>>> df[mask.any(1)]
     0    1    2    3    4
0   33  131   52  122   40
1  235  146   36    4   97
3  192   61  127  220  254
4  124  234  238  215   34
5   86    3  220  105  129
7  116  131   95   89  102
9   21  111  203   55  118

如果所有列都必须满足条件,请使用.all(axis=1)

>>> lt = df < 180
>>> gt = df > 30
>>> mask = np.logical_and(lt,gt)
>>> mask.all(1)
0     True
1    False
2    False
3    False
4    False
5    False
6    False
7     True
8    False
9    False
dtype: bool
>>> df[mask.all(1)]
     0    1   2    3    4
0   33  131  52  122   40
7  116  131  95   89  102
>>> 

【讨论】:

    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 2015-10-22
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多