在Python中:
所以在以下步骤设置完成后:
我想要的是找到
但是Pandas将加法视为逐元素"或"运算符,并给出以下(不期望的)输出:
我知道我可以使用
In [1]: True+True
Out[1]: 2
所以在以下步骤设置完成后:
import pandas as pd
ser1 = pd.Series([True,True,False,False])
ser2 = pd.Series([True,False,True,False])
我想要的是找到
ser1
和ser2
的逐元素求和,其中布尔值被视为整数进行加法运算,就像Python示例中一样。但是Pandas将加法视为逐元素"或"运算符,并给出以下(不期望的)输出:
In [5]: ser1+ser2
*/lib/python2.7/site-packages/pandas/computation/expressions.py:184: UserWarning: evaluating in Python space because the '+' operator is not supported by numexpr for the bool dtype, use '|' instead
unsupported[op_str]))
Out[5]:
0 True
1 True
2 True
3 False
dtype: bool
我知道我可以使用
astype(int)
在两个序列上获得我期望的输出:In [6]: ser1.astype(int) + ser2
Out[6]:
0 2
1 1
2 1
3 0
dtype: int64
还有其他更“泛用”的方法来获得[2,1,1,0]序列吗?为什么简单的序列加法在这里无法奏效,有没有好的解释?
astype(int)
似乎是最简单的方法。你需要什么样的解释? - DSM+
操作与逐元素的Python+
操作不会给出相同的结果。 - exp1orer