numpy.log10是“ ufunc”,并且该方法
Series.apply(func)对numpy
ufuncs进行了特殊测试,使其
test.apply(log10)等效于
np.log10(test)。这意味着将
test一个Pandas
Series实例传递给
log10。的数据类型
test为
object,这意味着中的元素
test可以是任意的Python对象。
np.log10不知道如何处理这样的对象集合(它不“知道”这些对象实际上是所有
np.float64实例),因此它尝试将计算分派到中的各个元素
Series。为此,它希望元素本身具有
log10方法。这就是发生错误的时间
Series:(在这种情况下,
np.float64实例)中的元素没有
log10方法。
一对夫妇的另一种表达应该做你想做的是
np.log10(test.astype(np.float64))和
test.astype(np.float64).apply(np.log10)。基本部分是
test.astype(np.float64)将
Series对象的数据类型从转换
object为
np.float64。



