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

Rtu*_*tut 9 python pattern-matching pandas

我有以下数据框:

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

1    | 2    | d-e-f

2    | 3    |  g
----------------------------
Run Code Online (Sandbox Code Playgroud)

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

myvar= 'a'
df.query('@myvar in col2')
Run Code Online (Sandbox Code Playgroud)

但它总是适用于精确匹配。模式匹配有什么解决方案吗?

谢谢,

鲁特

Cas*_*mir 5

对于OP需要的东西来说有点矫枉过正,但是这篇文章首先出现在正则表达式匹配的搜索结果中,df.query()可以通过以下方式完成Series.str.match

df.query("some_str_col.str.match('some-regex-\\d+$')")
Run Code Online (Sandbox Code Playgroud)

您可能必须首先将列的数据类型转换为字符串:

df['col2'] = df['col2'].astype(str)
Run Code Online (Sandbox Code Playgroud)


piR*_*red 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
Run Code Online (Sandbox Code Playgroud)