我想更好地了解大熊猫DataFrame.query方法,什么下列表达式表示:
match = dfDays.query('index > @x.name & price >= @x.target')
是什么@x.name
代表什么?
我知道这个代码的结果输出是什么(带有pandas.tslib.Timestamp
数据的新列),但对用于获得最终结果的表达式没有清楚的理解。
数据:
从这里:
Vectorised way to query date and price data
np.random.seed(seed=1)
rng = pd.date_range('1/1/2000', '2000-07-31',freq='D')
weeks = np.random.uniform(low=1.03, high=3, size=(len(rng),))
ts2 = pd.Series(weeks
,index=rng)
dfDays = pd.DataFrame({'price':ts2})
dfWeeks = dfDays.resample('1W-Mon').first()
dfWeeks['target'] = (dfWeeks['price'] + .5).round(2)
def find_match(x):
match = dfDays.query('index > @x.name & price >= @x.target')
if not match.empty:
return match.index[0]
dfWeeks.assign(target_hit=dfWeeks.apply(find_match, 1))
很好的解释,正是我所期待的。我希望我能多劳多得! – ade1e
非常整洁的答案! – MaxU