首页 > 解决方案 > Pandas df.mean() 抛出 TypeError:'NoneType' 对象不可调用或返回空系列

问题描述

标题说明了一切。

df = pd.DataFrame({"A":np.array([1,2,3,4]),"B":np.array([1,2,3,4])})
df_mean = df.mean(axis=0)
print(df_mean)

上面的代码输出一个空系列对象:

Series([], dtype: float64)

在填充有 MNIST 数据的数据帧上使用 df.mean() 会引发以下堆栈跟踪:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-42-bab38039484e> in <module>
      2 
      3 X_train_class, y_train_class, X_valid_class, \
----> 4         y_valid_class, X_test_class, y_test_class = prepare_load_classification_data()
      5 X_train_class.mean()
      6 # ebm = ExplainableBoostingClassifier()

<ipython-input-37-b1dcfdd01adc> in prepare_load_classification_data()
     45     train_features, train_labels, dev_features, \
     46         dev_labels, test_features, test_labels = load_data()
---> 47     feature_mean, label_mean = train_features.mean(axis=0), train_labels.mean(axis=0)
     48 
     49     train_features = pd.DataFrame(data=np.where(train_features > feature_mean, 1, 0), columns=FEATURE_NAMES)

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\generic.py in mean(self, axis, skipna, level, numeric_only, **kwargs)
  11107         )
  11108         def mean(self, axis=None, skipna=None, level=None, numeric_only=None, **kwargs):
> 11109             return NDFrame.mean(self, axis, skipna, level, numeric_only, **kwargs)
  11110 
  11111         # pandas\core\generic.py:10924: error: Cannot assign to a method

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\generic.py in mean(self, axis, skipna, level, numeric_only, **kwargs)
  10718     def mean(self, axis=None, skipna=None, level=None, numeric_only=None, **kwargs):
  10719         return self._stat_function(
> 10720             "mean", nanops.nanmean, axis, skipna, level, numeric_only, **kwargs
  10721         )
  10722 

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\generic.py in _stat_function(self, name, func, axis, skipna, level, numeric_only, **kwargs)
  10703             return self._agg_by_level(name, axis=axis, level=level, skipna=skipna)
  10704         return self._reduce(
> 10705             func, name=name, axis=axis, skipna=skipna, numeric_only=numeric_only
  10706         )
  10707 

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\series.py in _reduce(self, op, name, axis, skipna, numeric_only, filter_type, **kwds)
   4150                 )
   4151             with np.errstate(all="ignore"):
-> 4152                 return op(delegate, skipna=skipna, **kwds)
   4153 
   4154     def _reindex_indexer(self, new_index, indexer, copy):

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\nanops.py in _f(*args, **kwargs)
     69             try:
     70                 with np.errstate(invalid="ignore"):
---> 71                     return f(*args, **kwargs)
     72             except ValueError as e:
     73                 # we want to transform an object array

c:\users\fmijs\anaconda3\lib\site-packages\pandas\core\nanops.py in f(values, axis, skipna, **kwds)
    122                     #  TypeError if called
    123                     kwds.pop("mask", None)
--> 124                     result = bn_func(values, axis=axis, **kwds)
    125 
    126                     # prefer to treat inf/-inf as NA, but must compute the func

TypeError: 'NoneType' object is not callable

它似乎与 pandas 或 numpy 的安装损坏有关,但在重新安装降级或启动新的 Conda 环境后,问题仍然存在。任何帮助将不胜感激!

标签: pythonpandasdataframemean

解决方案


我用 pandas 1.1.3 和 numpy 1.19.2 运行它并工作。我还在 Jupyter 中使用 pandas 1.2.3 和 numpy 1.19.5 运行它并工作。

我更新了所有内容并使用 pandas 1.2.4 和 numpy 1.20.2 运行它,它工作正常。

所以要么是因为 numpy,要么是因为不同的原因。

你真的只有这个代码吗?或者是否有其他代码可能会干扰您的代码段?


推荐阅读