如何为多列使用str.startswith?

时间:2018-09-22 15:22:51

标签: python string pandas startswith

我有一个看起来像这样的数据框: 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'))]]

有什么想法吗?

1 个答案:

答案 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')) ]的“行”,对于这些数据帧, dfuserA均以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> dfuserAuserB中的字符开头)

有关更多信息,请参见Boolean indexing in the pandas documentation上的文档。