Pandas df.mean() 抛出 TypeError:'NoneType' 对象不可调用或返回空系列
Posted
技术标签:
【中文标题】Pandas df.mean() 抛出 TypeError:\'NoneType\' 对象不可调用或返回空系列【英文标题】:Pandas df.mean() throws TypeError: 'NoneType' object is not callable or returns empty SeriesPandas df.mean() 抛出 TypeError:'NoneType' 对象不可调用或返回空系列 【发布时间】:2021-08-19 23:53:45 【问题描述】:标题说明了一切。
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 环境后,问题仍然存在。任何帮助将不胜感激!
【问题讨论】:
运行您提供给我的示例并使用以下数据框:A 2.5 B 2.5 dtype: float64
您能否提供您正在使用的 Pandas、Numpy 和 Conda 的版本?
Numpy: 1.20.3 Pandas: 1.2.4 Conda 4.8.5 为了清楚起见,我在 Jupyter notebook Jupyter:1.0.0 中运行它,但在 .py 文件中存在相同的错误和行为
【参考方案1】:
我用 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,要么是因为不同的原因。
你真的只有这段代码吗?或者是否有其他代码可能会干扰您的 sn-p?
【讨论】:
我在新的命令提示符下运行了代码 sn-p,使用上述库激活了新的 conda 提示符。所以我真的不认为有任何代码可以干扰它【参考方案2】:对我来说,问题是在导入 numpy 之前导入 pandas 引起的
所以而不是:
import pandas as pd
import numpy as np
我改成
import numpy as np
import pandas as pd
它解决了这个问题
【讨论】:
以上是关于Pandas df.mean() 抛出 TypeError:'NoneType' 对象不可调用或返回空系列的主要内容,如果未能解决你的问题,请参考以下文章