我有以下数据框:
----------------------------
Index| col1 | col2 |
----------------------------
0 | 1 | a-b-c
1 | 2 | d-e-f
2 | 3 | g
----------------------------
我希望能够进行如下查询:
myvar= 'a'
df.query('@myvar in col2')
但它始终适用于完全匹配。模式匹配有什么解决方案吗?
谢谢,
Rtut
答案 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)')