2015-10-16 51 views
0

在我的測試中,我有一個方法check_nulls檢查特定列空大熊貓hasnan()的系列爲「類型錯誤:‘numpy.bool_’對象不是可調用

def check_nulls(self, name, column_list): 
     """ Ensure that the table given has no nulls in any of the listed columns 
      @param name the name of the table to check 
      @param column_list the columns to check for nulls 
     """ 
     df = util.TABLES.load_table(name, 
              config.get_folder("TRANSFORMED_FOLDER"), 
            sep='|') 
     #print df 
     for column in column_list: 
      print df[column].dtypes 
      print df[column] 
      self.assertFalse(df[column].dtypes != "int32" 
           and df[column].dtypes != "int64" 
           and df[column].hasnans(), 
          '{0} in {1} contains null values'\ 
          .format(column, name)) 

,誤差值在DF [發生列] .hasnans()它給了我一些表一個TypeError。

TypeError: 'numpy.bool_' object is not callable 

起初我還以爲是有沒有真正的空,因爲如果他們有,他們將被轉換爲空INT列的問題一個浮動列我增加了免除支票,但我現在遇到一個dtype爲「對象「,這也給我錯誤。

如何正確檢查數據幀中的列中的空值?我檢查了df [列]的類型,它實際上是一個系列。

回答

3

hasnans是一個簡單的布爾值,不是一種方法,所以你不能稱它。

但是,我不認爲這是確定系列是否包含nans的可靠方法。

>>> x = pandas.Series([1, 2, 3]) 
>>> x.hasnans 
False 
>>> x[1] = np.nan 
>>> x 
0  1 
1 NaN 
2  3 
dtype: float64 
>>> x.hasnans 
False 

要檢查系列包含NaN的,使用if mySeries.isnull().any():如果修改了系列現在已經不再更新。

0

哇我覺得這很愚蠢,但會留下的問題,以防其他人犯同樣的愚蠢的錯誤。

hasnans是布爾不是函數的解決方案是不嘗試調用它

DF [柱] .hasnans不DF [柱] .hasnans()

+0

感謝橡皮鴨。 – lathomas64

相關問題