检查列的每一行是否在范围内
问题描述:
我正在构建一些数据的单元测试,并且在编写数据的pythonic检查时遇到了麻烦。检查列的每一行是否在范围内
我有一个熊猫DataFrame
:
d = {'one' : pd.Series([.14, .52, 1.], index=['a', 'b', 'c']),
'two' : pd.Series([.57, .25, .33, .98], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
现在,我想验证这些列数据的范围[0,1]内的下降。我希望有一个功能:
check_data(df, column)
如果它不只是返回如果数据下降的范围True
和False
。所以在我的示例数据中,check_data(df, 'one')
返回False
,check_data(df, 'two')
返回True
。
我的头正试图采取一行一行的方式(谢谢我多年的Excel VBA),但我知道这是错误的。任何人都有更好的方法?
答
你可以使用between
和all
检查各列:
>>> df['one'].between(0, 1).all()
False
>>> df['two'].between(0, 1).all()
True
between
默认包含端点;改变这个设置inclusive=False
。
你也可以查看数据帧的每一列一次,如果你想:
>>> ((0 <= df) & (df <= 1)).all()
one False
two True
dtype: bool