【发布时间】:2018-01-25 18:57:10
【问题描述】:
我有一个 python 函数,它获取一个 pandas 数据帧并通过 DataFrame 的“查询”函数对其执行条件。
像 =、!= 这样简单的条件,一切都可以。
但我希望它执行带有“like”的条件。这可能吗?
另外,我想检查某个列是否大于“现在”...
我该怎么做?
【问题讨论】:
-
这取决于你想如何使用
like。答案会相应改变。
我有一个 python 函数,它获取一个 pandas 数据帧并通过 DataFrame 的“查询”函数对其执行条件。
像 =、!= 这样简单的条件,一切都可以。
但我希望它执行带有“like”的条件。这可能吗?
另外,我想检查某个列是否大于“现在”...
我该怎么做?
【问题讨论】:
like。答案会相应改变。
我认为LIKE 功能没有实现到query 原生方式,需要contains、match 和similar functions。
与今天比较:
now = pd.datetime.today()
df.query("col > @now")
【讨论】:
演示:
In [166]: now = pd.datetime.today()
In [167]: df
Out[167]:
date s
0 2017-01-18 sample string
1 2017-12-01 blah-blah
2 2017-08-17 a key
In [168]: df.query("s.str.contains('key')", engine='python')
Out[168]:
date s
2 2017-08-17 a key
In [169]: df.query("s.str.contains('key') or date > @now", engine='python')
Out[169]:
date s
1 2017-12-01 blah-blah
2 2017-08-17 a key
【讨论】: