我有一个看起来像这样的数据框: my data
我用它来过滤ID以b,c,e,f,5开头并且能够成功执行此操作的用户。
df[df.userA.str.startswith(('b','c','e','f','5'))]
我现在想要对userA和userB列执行相同的操作,并尝试运行失败:
df[[df.userA.str.startswith(('b','c','e','f','5'))] and [df.userB.str.startswith(('b','c','e','f','5'))]]
有什么想法吗?
答案 0 :(得分:0)
您不能使用and
,因为在Python中,这将返回具有真实性False
的 first 操作数(或者在{{1 }}链,最后一个元素)。
不过,您可以将and
和&
运算符分别用作逻辑和和或来应用多个条件。
因此,您可能需要使用:
|
(这给出了数据帧df[
df.userA.str.startswith(('b','c','e','f','5')) &
df.userB.str.startswith(('b','c','e','f','5'))
]
的“行”,对于这些数据帧, df
和userA
均以userB
中的字符开头) ;或
('b','c','e','f','5')
(这给出了数据帧df[
df.userA.str.startswith(('b','c','e','f','5')) |
df.userB.str.startswith(('b','c','e','f','5'))
]
的“行”,对于这些数据帧,至少 {em> df
或userA
以userB
中的字符开头)
有关更多信息,请参见Boolean indexing in the pandas documentation上的文档。