Series取反·不简单
此篇介绍今天遇到的一个有意思的bug
与bug不期而遇
今天coding完毕,测试代码的时候,下面一段代码出现了错误。
amp_samples = value[value].index.tolist()not_amp_samples = value[~value].index.tolist()
value
是一个值为True
或False
的Series
,我想从中分别获取值为True
和False
的index
列表。
代码很简单,pandas
中使用~
进行条件取反。于是,利用value[value]
和value[~value]
即可进行筛选。
但是出错了。
IndexError Traceback (most recent call last)-38-e29c78a5ffe7> ----> 1 value[~value]IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
index
错误。而且很清楚的写明是value[~value]
而不是value[value]
错误。
复现
第一反应就是~
条件取反是不是在Series
中不能用。
进入ipython进行测试。
import pandas as pdseries = pd.Series({
'R1':True,'R2':False,'R3':False,'R4':True})print(series[series])print(series[~series])