我正在两个系列上执行布尔运算。我期待布尔操作自动执行与同一索引相对应的操作。但它只是通过订单来做。这是预期的行为还是有一些不同的做法? 感谢
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
答案 0 :(得分:6)
对我来说这似乎是bug:
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
答案 1 :(得分: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