3

誰かが数日前に pandas.algos の関数を指摘してくれました ( https://stackoverflow.com/a/17705498/2565842を参照)。これに関するドキュメントが見つかりません。http://pandas.pydata.org/pandas-docs/dev/の pandas 検索ボックスに「algos」または「is_monotonic_float64」(問題の関数) と入力しても、結果が得られません。同様に、Google に問い合わせても、役立つ情報は何も得られません。

ドキュメントを探している理由は、関数が受け入れる型に問題があるためです。次のような 2 つの関数を作成しました。

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 に何らかの型変換を行う必要がありますか?

4

1 に答える 1

0

アルゴのドキュメントについては不明です。文書化されていないものがある場合は、いつでもソース コードで見つけることができます。この関数は高性能のために Cython で記述されているため、特に密度の高い例です。

しかし、それについてはValueError、ご想像のとおり、各列のデータ型は、そのすべてのデータを収容するのに十分一般的でなければなりません。を実行してオーバーライドしdf.convert_objects(convert_numeric)ます。数字ではないもの (例: t) は に置き換えられNaNます。すべての数値はfloat64型になるはずです。そうすれば、仕事が期待できis_monotonic_float64ます。

または、 もあることがわかりますが、 とのpd.algos.is_monotonic_object比較など、どのように動作するかはわかりませt0.25823974

于 2013-07-19T17:51:43.410 に答える