查找在熊猫中包含两个列值的行

时间:2020-05-01 01:42:05

标签: pandas

我下面有csv

ID,Name1,Name2
1,A,A
2,B,B
3,C,D
4,0,Z
5,0,Z

找到所有具有Name1 ==0 and Name2==Z

的行

预期是

4,0,Z
5,0,Z

我的代码

df[df['Name1'].str.contains("0") & df['Name2'].str.contains('Z')] 

还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

另一种方法,使用query方法:

df.query('Name1.str.contains("0") and Name2.str.contains("Z")')

# or

df.query('Name1 == "0" and Name2 == "Z"')

#   ID   Name1  Name2
# 3 4    0      Z
# 4 5    0      Z

在评论建议中,contains比使用==慢一点,因为第一个会尝试匹配子字符串。

答案 1 :(得分:1)

向量化操作提供了最快的运行速度:

df[(df.Name1 == "0") & (df.Name2 == "Z")]
   ID  Name1  Name2
3   4      0      Z
4   5      0      Z