当每个值都是ndarray时,按值获取pandas子系列

时间:2016-09-22 10:11:03

标签: python pandas indexing series

当系列由ndarrays组成时,我希望通过值创建子系列。

这个有效。

sa = pd.Series([1,2,35,2],index=list('abcd'))
sa[sa==2]

结果

b    2
d    2
dtype: int64

为什么以下代码不起作用?我应该改变什么?它给出了一个ValueError:长度必须匹配才能比较

sa2 = pd.Series([np.array(['out']), np.array(['2f-right', '2f']), np.array(['out', '2f']), np.array(['out'])], index=list('abcd'))
ar = np.array(['out'])
sa2[sa2 == ar]

1 个答案:

答案 0 :(得分:2)

比较运算符不了解如何在此处比较np数组的相等性,因此您可以将applylambda一起使用:

In [211]:
sa2[sa2.apply(lambda x: (x == ar).all())]

Out[211]:
a    [out]
d    [out]
dtype: object

所以我们在这里与数组进行比较并使用all生成一个布尔掩码