如何使用`query`方法检查列的元素是否包含特定字符串

时间:2016-09-23 17:04:51

标签: python pandas

我知道如何检查列是否包含字符串。我的优先方法是使用.str.contains。但是,它返回一个布尔数组,我必须将其用作原始数据帧的掩码。 query的便利之处在于它返回已经过滤的数据帧。

考虑df

df = pd.DataFrame(np.array(list('abcdefghijklmno')).reshape(5, 3),
                  columns=list('XYZ')).add('w')
df

enter image description here

使用str.contains

df[df.Y.str.contains('b')]

enter image description here

但我倾向于使用query

df.query('Y == "bw"')

enter image description here

问题是,我不知道如何使用query检查子字符串。我想要类似的东西。

df.query('Y like "b%"')

1 个答案:

答案 0 :(得分:4)

目前不支持此功能,query仅实现操作的子集,基本上不执行任何字符串功能。

只是评论的旁注,query确实支持in关键字的矢量化版本。

df.query('X in ["aw", "dw"]')
Out[9]: 
    X   Y   Z
0  aw  bw  cw
1  dw  ew  fw