当系列由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]
答案 0 :(得分:2)
比较运算符不了解如何在此处比较np数组的相等性,因此您可以将apply
与lambda
一起使用:
In [211]:
sa2[sa2.apply(lambda x: (x == ar).all())]
Out[211]:
a [out]
d [out]
dtype: object
所以我们在这里与数组进行比较并使用all
生成一个布尔掩码