pandas diff如何处理bool值?

时间:2017-08-20 16:49:06

标签: python-3.x pandas boolean

这是显式减法的结果

>> True - False
1
>> False - True
-1

这是pandas.Series.diff

的结果
>> x = pd.Series([True,False,True])
>> x.diff()

0     NaN
1    True
2    True
dtype: object

但是,我希望得到

0     NaN
1      -1
2       1
dtype: object

为什么结果会有所不同以及大熊猫在这种情况下如何对待bool?

1 个答案:

答案 0 :(得分:0)

来自series.py

result = algorithms.diff(_values_from_object(self), periods)

来自algorithms.py

out_arr[res_indexer] = arr[res_indexer] - arr[lag_indexer]

因此,它导致2个numpy布尔数组的减法。

正如评论中指出的那样,numpy以自己的方式减去布尔值,这与本机python减法不同

>> np.array([True, False]) - np.array([False, True])
array([ True,  True], dtype=bool)