0

reindex_likePandas シリーズ オブジェクトの使用時と関連機能の違いについて混乱しています。たとえば、次の Series オブジェクトについて考えてみます。

>>> import numpy
>>> import pandas
>>> series = pandas.Series([1, 2, 3])
>>> x = pandas.Series([True]).reindex_like(series).fillna(True)
>>> y = pandas.Series(True, index=series.index)
>>> x
0    True
1    True
2    True
>>> y
0    True
1    True
2    True

表面的にはxyの内容と索引は同一に見えます。ただし、使用時にエラーが発生するものと発生しないものがあるため、何らかの方法で異なる必要がありますnumpy.logical_and()

>>> numpy.logical_and(series, y)
0    True
1    True
2    True
>>> numpy.logical_and(series, x)
Traceback (most recent call last):
  File "<ipython-input-10-e2050a2015bf>", line 1, in <module>
    numpy.logical_and(series, x)
AttributeError: logical_and

numpy.logical()ここで文句を言っているのは何ですか?x2 つのシリーズの違いがわかりませんy。ただし、微妙な違いがあるはずです。

Pandas のドキュメントによると、Series オブジェクトは「ほとんどの NumPy 関数」に対する有効な引数です。明らかに、これはこの場合ある程度真実です。どうやら、作成メカニズムによりx、この特定のnumpy関数が使用できなくなります。

補足として、このシナリオでは、2 つの作成メカニズムreindex_like()index引数のどちらがより効率的で慣用的ですか? たぶん、私も考えていない別の/より良い方法があります。

4

1 に答える 1

0

これはバグではないようで、微妙な違いはメソッドの使用法によるものreindex_like()です。への呼び出しは、reindex_like()いくつかの NaN データをシリーズに挿入するため、dtypeそのシリーズの は から に変更さboolobjectます。

>>> series = pandas.Series([1, 2, 3])
>>> x = pandas.Series([True])
>>> x.dtype
dtype('bool')
>>> x = pandas.Series([True]).reindex_like(series)
>>> x.dtype
dtype('object')

Pandas github ページに、この異常に関する問題を投稿しました。

完全な説明/議論はここにあります。この動作は将来的に変更される可能性があるため、進行中の詳細については問題を監視してください。

于 2012-11-29T21:29:18.850 に答える