我正在构建一些数据的单元测试,并且在编写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
.
如果您愿意,您还可以立即检查DataFrame的每一列:
>>> ((0 <= df) & (df <= 1)).all() one False two True dtype: bool