pandas.dataframe.query()中的模式搜索

时间:2016-06-16 18:39:46

标签: python pandas pattern-matching

我有以下数据框:

----------------------------
Index| col1 | col2 |
----------------------------
0    | 1    | a-b-c

1    | 2    | d-e-f

2    | 3    |  g
----------------------------

我希望能够进行如下查询:

myvar= 'a'
df.query('@myvar in col2')

但它始终适用于完全匹配。模式匹配有什么解决方案吗?

谢谢,

Rtut

3 个答案:

答案 0 :(得分:0)

这应该有效:

df = pd.DataFrame([[1, 'a-b-c'], [2, 'd-e-f'], [3, 'g']], columns=['col1', 'col2'])

myvar = 'a'

df.loc[df.col2.str.contains(myvar)]

   col1   col2
0     1  a-b-c

答案 1 :(得分:0)

我担心你不能用.query()来做。它会将你的@myvar与整个字符串进行比较 - 尝试设置myvar =“g”并重新执行你的查询 - 它会返回一行索引== 2.

AFAIK,DataFrame.query中的正则表达式aren't supported以及

答案 2 :(得分:0)

您可以执行以下操作:

myvar = 'a'
df.query('col2.str.contains(@myvar)')