在Python中:
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的元素总和,将booleans视为加法的整数,如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]系列是否有另一种(更“泛音”)方式?是否有一个很好的解释为什么简单的系列添加在这里不起作用?
解决方法:
IIUC,你正在寻找的是操作约定是numpy bool数组,而不是Python bool:
>>> a = True
>>> a+a
2
>>> import numpy as np
>>> np.array([a])
array([ True], dtype=bool)
>>> np.array([a]) + np.array([a])
array([ True], dtype=bool)
可能已经走了,如果内存服务至少有一个大熊猫开发者对这种行为感到惊讶,但这样做可以匹配系列输入的想法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。