我正在寻找文档的原因是我遇到了函数接受的类型的问题。我写了两个这样的函数:
def is_monotonic(time_series, cols):
return time_series.loc[:,cols].apply(lambda x:
pandas.algos.is_monotonic_float64(x)[0] if is_type(x, float) else "non_numeric data",
axis=1)
def is_type(series, t):
return series.apply(lambda x: type(x) == t).all()
我在以下数据框上运行
0 1 2 3 4
A t t t t t
B 0.2583974 0.3311106 0.933452 NaN 0.1908287
C 0.4400121 0.9548238 0.2953693 0.7027355 0.6149148
D 0.4049013 0.5930965 0.7073495 0.3801416 0.4931772
然后得到错误
ValueError: ("Buffer dtype mismatch, expected 'float64_t' but got Python object"
当我检查数据框中的类型时,第一行是字符串,其他类型是'float'。我需要在这里进行某种类型的numpy.float64转换吗?
答案 0 :(得分:0)
不确定algos文档。如果某些内容没有记录,您可以随时find it in the source code。这个函数是用于高性能的Cython编写的,因此它是一个特别密集的例子。
但关于那个ValueError
,正如您所料,每列的数据类型必须足够通用以容纳其所有数据。通过执行df.convert_objects(convert_numeric)
来覆盖它。任何非数字的内容(例如t
)都将替换为NaN
。所有数字都应该成为float64
类型,然后我会期望is_monotonic_float64
用于工作。
或者,我看到还有一个pd.algos.is_monotonic_object
,但我不确定它的行为,例如它如何将t
与0.25823974
进行比较。