Pandas algos包:在哪里可以找到文档或更多关于“is_monotonic_float64”的信息

时间:2013-07-19 16:06:54

标签: python pandas

几天前有人给我指了pandas.algos中的一个函数(参见https://stackoverflow.com/a/17705498/2565842),我找不到任何关于此的文档。当我在http://pandas.pydata.org/pandas-docs/dev/的pandas搜索框中输入“algos”或“is_monotonic_float64”(相关函数)时,我没有得到任何结果。同样,当我问谷歌时,我也没有得到任何有用的东西。

我正在寻找文档的原因是我遇到了函数接受的类型的问题。我写了两个这样的函数:

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转换吗?

1 个答案:

答案 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,但我不确定它的行为,例如它如何将t0.25823974进行比较。