0

我对 Pandas Series 对象在使用reindex_like和相关功能时的区别感到困惑。例如,考虑以下 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()在这里抱怨什么?我看不出这两个系列之间的区别,x并且y. 但是,必须有一些细微的差别。

Pandas 文档说 Series 对象是“大多数 NumPy 函数”的有效参数。显然,在这种情况下,这在某种程度上是正确的。显然,创建机制使x这个特定的 numpy 函数无法使用。

作为旁注,这两种创建机制中的哪一种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 回答