[英]How to check if a combined value of two columns exist in another dataframe in Pandas?
[英]In a pandas dataframe, how do I check if two strings exist on same row but in different columns?
因此,我一直在尝试找出如何编写最简单的if语句,以便检查在任何行中rootID中是否存在字符串“ A”,在parentID中是否存在“ B”字符串。 然后,我想删除该行。 在以下数据框中,我本想在这种情况下删除第0行。
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()
但是当我需要在两列中检查两个不同的字符串时该怎么办?
使用boolean indexing
和由|
链接的掩码 用于bitwise OR
和~
用于反转布尔掩码。
如果需要检查子字符串:
m1 = ~df['rootID'].str.contains("A")
m2 = ~df['parentID'].str.contains("B")
如果需要检查字符串,请使用Series.ne
:
m1 = df['rootID'].ne("A")
m2 = df['parentID'].ne("B")
#alternatives
#m1 = df['rootID'] != "A"
#m2 = df['parentID'] != "B"
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"')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.