Python 在pandas数据帧中,如何检查两个字符串是否存在于同一行但在不同列中?
因此,我一直在试图找出如何编写最简单的if语句,以便检查rootID中是否存在字符串“A”,parentID中是否存在任何行中的字符串“B”。然后我想删除该行。在下面的数据帧中,我希望在这种情况下删除第0行Python 在pandas数据帧中,如何检查两个字符串是否存在于同一行但在不同列中?,python,pandas,dataframe,Python,Pandas,Dataframe,因此,我一直在试图找出如何编写最简单的if语句,以便检查rootID中是否存在字符串“A”,parentID中是否存在任何行中的字符串“B”。然后我想删除该行。在下面的数据帧中,我希望在这种情况下删除第0行 rootID parentID jobID time 0 A B D 2019-01-30 14:33:21.339469
rootID parentID jobID time
0 A B D 2019-01-30 14:33:21.339469
1 E F G 2019-01-30 14:33:21.812381
2 A C D 2019-01-30 15:33:21.812381
3 E E F 2019-01-30 15:33:21.812381
4 E F G 2019-01-30 16:33:21.812381
我知道如何检查是否存在一个元素,例如
if df['rootID'].str.contains("A").any()
但是,当我需要检查两列中的两个不同字符串时,我该如何做呢?对于按位或
使用
链接的掩码,对于反向布尔掩码使用~
如果需要检查子字符串:
m1 = ~df['rootID'].str.contains("A")
m2 = ~df['parentID'].str.contains("B")
如果需要检查字符串,请使用:
另一个解决方案:
df = df.query('rootID != "A" | parentID != "B"')
再次感谢你帮助我。之后如何选择该行并将其从原始数据帧中删除?为了正确实现这一点。我首先定义m1和m2,然后用“if m1和m2:”?@Kspr-No,你可以使用
df=df[~df['rootID'].str.contains(“A”)| ~df['parentID'].str.contains(“B”)]
和类似的方法来测试它,只要条件更多,它就更可读。问题是每次发生这种情况时,我都需要检查并每次增加一个计时器。所以我想要一个if,这样我可以增加计数器,然后删除行。你为什么不数一数有多少这样的行呢?(提示:创造出来的布尔人很容易回答这个问题)@Kspr
df = df[m1 | m2]
print (df)
rootID parentID jobID time
1 E F G 2019-01-30 14:33:21.812381
2 A C D 2019-01-30 15:33:21.812381
3 E E F 2019-01-30 15:33:21.812381
4 E F G 2019-01-30 16:33:21.812381
df = df.query('rootID != "A" | parentID != "B"')