检查数据帧中的所有值是否在一定范围内,数据帧是否有类似“between”的属性
Check if all values in a dataframe is in a certain range, is there an attribute like `between` for dataframe
这有点尴尬。我有一个如下所示的数据框:
ticker AAPL AMD BIDU GOOGL MSFT NVDA
Date
2011-09-09 0.858191 0.726996 0.777005 0.738601 0.882434 0.844533
2011-12-19 0.703769 0.789988 0.757444 0.866387 0.865608 0.817366
2012-03-30 0.508363 0.737064 0.580451 0.332273 0.502175 0.582802
2012-07-11 0.715340 0.754651 0.674592 0.680000 0.738280 0.664645
2012-10-18 0.579068 0.342038 0.422278 0.441221 0.794282 0.571650
2013-02-01 0.644426 0.440327 0.363183 0.571987 0.639081 0.508256
2013-05-14 0.571758 0.342966 0.340528 0.681480 0.499203 0.612509
2013-08-22 0.256618 0.439223 0.503821 0.632371 0.428107 0.496814
2013-12-02 0.395739 0.281040 0.535051 0.457601 0.371708 0.555272
...
我想检查 df
中的所有值是否都在 [-1,1]
范围内,我只是使用了
df.isin([-1,1])
返回
ticker AAPL AMD BIDU GOOGL MSFT NVDA
Date
2011-09-09 False False False False False False
2011-12-19 False False False False False False
2012-03-30 False False False False False False
2012-07-11 False False False False False False
2012-10-18 False False False False False False
2013-02-01 False False False False False False
2013-05-14 False False False False False False
2013-08-22 False False False False False False
2013-12-02 False False False False False False
...
这显然是错误的。但是,如果我使用 df["AAPL"].between(-1,1).any()
检查单个列,它会给我 True
.
这是为什么?
数据框是否有类似 between
的属性?因为'DataFrame' object has no attribute 'between'
between
只是一个 Series
方法。使用数学运算符对 DataFrame
:
进行比较
>>> (-1 <= df) & (df <= 1)
ticker AAPL AMD BIDU GOOGL MSFT NVDA
Date
2011-09-09 True True True True True True
2011-12-19 True True True True True True
2012-03-30 True True True True True True
2012-07-11 True True True True True True
2012-10-18 True True True True True True
2013-02-01 True True True True True True
2013-05-14 True True True True True True
2013-08-22 True True True True True True
2013-12-02 True True True True True True
之后,您可以使用 any
或 all
沿轴(或不沿轴)到 select 列或行。
这有点尴尬。我有一个如下所示的数据框:
ticker AAPL AMD BIDU GOOGL MSFT NVDA
Date
2011-09-09 0.858191 0.726996 0.777005 0.738601 0.882434 0.844533
2011-12-19 0.703769 0.789988 0.757444 0.866387 0.865608 0.817366
2012-03-30 0.508363 0.737064 0.580451 0.332273 0.502175 0.582802
2012-07-11 0.715340 0.754651 0.674592 0.680000 0.738280 0.664645
2012-10-18 0.579068 0.342038 0.422278 0.441221 0.794282 0.571650
2013-02-01 0.644426 0.440327 0.363183 0.571987 0.639081 0.508256
2013-05-14 0.571758 0.342966 0.340528 0.681480 0.499203 0.612509
2013-08-22 0.256618 0.439223 0.503821 0.632371 0.428107 0.496814
2013-12-02 0.395739 0.281040 0.535051 0.457601 0.371708 0.555272
...
我想检查 df
中的所有值是否都在 [-1,1]
范围内,我只是使用了
df.isin([-1,1])
返回
ticker AAPL AMD BIDU GOOGL MSFT NVDA
Date
2011-09-09 False False False False False False
2011-12-19 False False False False False False
2012-03-30 False False False False False False
2012-07-11 False False False False False False
2012-10-18 False False False False False False
2013-02-01 False False False False False False
2013-05-14 False False False False False False
2013-08-22 False False False False False False
2013-12-02 False False False False False False
...
这显然是错误的。但是,如果我使用 df["AAPL"].between(-1,1).any()
检查单个列,它会给我 True
.
这是为什么?
数据框是否有类似 between
的属性?因为'DataFrame' object has no attribute 'between'
between
只是一个 Series
方法。使用数学运算符对 DataFrame
:
>>> (-1 <= df) & (df <= 1)
ticker AAPL AMD BIDU GOOGL MSFT NVDA
Date
2011-09-09 True True True True True True
2011-12-19 True True True True True True
2012-03-30 True True True True True True
2012-07-11 True True True True True True
2012-10-18 True True True True True True
2013-02-01 True True True True True True
2013-05-14 True True True True True True
2013-08-22 True True True True True True
2013-12-02 True True True True True True
之后,您可以使用 any
或 all
沿轴(或不沿轴)到 select 列或行。