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)
但它总是适用于精确匹配。模式匹配有什么解决方案吗?
谢谢,
鲁特
对于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)
这应该有效:
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)
| 归档时间: |
|
| 查看次数: |
9774 次 |
| 最近记录: |