【发布时间】:2012-11-17 16:59:54
【问题描述】:
在使用reindex_like 和相关功能时,我对 Pandas 系列对象之间的区别感到困惑。例如,考虑以下 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
表面上x 和y 的内容和索引似乎相同。但是,它们必须在某些方面有所不同,因为其中一个在使用 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 参数这两种创建机制中的哪一种在这种情况下更有效和更惯用?也许还有另一种/更好的方法我也没有考虑过。
【问题讨论】:
-
您使用的是哪个 pandas/numpy/python 版本?
numpy.logical_and(series, x)在pandas-0.9.0-py2.7中对我来说没有错误... -
使用 pandas 0.9.1 和 numpy 1.6.2
-
如果这是 pandas 0.9.1 中的一个新错误,我会感到惊讶,但也许值得升级到 numpy 1.8 版? (我正在使用的版本似乎可以工作......)
-
numpy 的当前稳定版本是 1.6.2(通过 PyPi 和 numpy 站点)。您是否在 1.8 版中使用 numpy 的 github 存储库?我想我会为 pandas 发布一个 github 问题,看看他们怎么说。
-
我在 github 上为 Pandas 发布了一个问题。也许他们会有更多的见解:github.com/pydata/pandas/issues/2388