8

我正在对两个系列执行布尔运算。我期待布尔操作自动执行与同一索引对应的操作。但相反,它只是按顺序执行。这是预期的行为还是有一些不同的方法?谢谢

b
Out[47]: 
AEIS    False
AAPL     True
ACFN    False
Name: OldPosition, dtype: bool

a
Out[48]: 
AAPL     True
ACFN    False
AEIS     True
dtype: bool

a&b
Out[50]: 
AAPL    False
ACFN    False
AEIS    False
dtype: bool
4

2 回答 2

8

这对我来说似乎是一个错误

In [1]: a = pd.Series([True, False, True], list('bca'))

In [2]: b = pd.Series([False, True, False], list('abc'))

In [3]: a & b
Out[3]:
b    False
c    False
a    False
dtype: bool

一种解决方法是使用相同的索引重新索引:

In [4]: index = a.index | b.index

In [5]: a.reindex(index) & b.reindex(index)
Out[5]:
a    False
b     True
c    False
dtype: bool
于 2013-09-23T06:01:57.020 回答
2

如果您有相同长度的系列,您应该能够使用一个系列的索引来订购另一个系列以符合您的需求。

In [15]: a[b.index]
Out[15]:
a     True
b     True
c    False
dtype: bool

In [16]: b
Out[16]:
a    False
b     True
c    False
dtype: bool

In [17]: a[b.index] & b
Out[17]:
a    False
b     True
c    False
dtype: bool

我可以确认从 pandas 0.17.1 开始,所需的功能已经到位。

In [1]: import pandas as pd

In [2]: a = pd.Series([True, False, True], list('bca'))

In [3]: b = pd.Series([False, True, False], list('abc'))

In [4]: b & a
Out[4]:
a    False
b     True
c    False
于 2016-02-10T22:57:35.123 回答