2015-12-14 119 views
2

我正在構建一些數據的單元測試,並且在編寫數據的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) 

如果它不只是返回如果數據下降的範圍TrueFalse。所以在我的示例數據中,check_data(df, 'one')返回Falsecheck_data(df, 'two')返回True

我的頭正試圖採取一行一行的方式(謝謝我多年的Excel VBA),但我知道這是錯誤的。任何人都有更好的方法?

回答

6

你可以使用betweenall檢查各列:

>>> 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 
相關問題