gpt4 book ai didi

python - Pandas dataframe.query 方法语法

转载 作者:太空狗 更新时间:2023-10-29 21:23:36 24 4
gpt4 key购买 nike

问题:

我想更好地了解 Pandas 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))

最佳答案

@x.name - @ 帮助 .query() 理解 x 是一个外部对象(不属于为其调用 query() 方法的 DataFrame)。在这种情况下,x 是一个 DataFrame。它也可以是标量值。

我希望这个小演示能帮助你理解它:

In [79]: d1
Out[79]:
a b c
0 1 2 3
1 4 5 6
2 7 8 9

In [80]: d2
Out[80]:
a x
0 1 10
1 7 11

In [81]: d1.query("a in @d2.a")
Out[81]:
a b c
0 1 2 3
2 7 8 9

In [82]: d1.query("c < @d2.a")
Out[82]:
a b c
1 4 5 6

标量 x:

In [83]: x = 9

In [84]: d1.query("c == @x")
Out[84]:
a b c
2 7 8 9

关于python - Pandas dataframe.query 方法语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41922130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com