query() 函数简介
pandas的query()方法是基于DataFrame列的计算代数式,对于按照某列的规则进行过滤的操作,可以使用query方法。
代码示例
1
2
3
4
5
6
|
import pandas as pd
df = pd.DataFrame({ 'a' :[ 1 , 2 , 3 , 4 , 5 , 6 ],
'b' :[ 1 , 2 , 3 , 4 , 5 , 6 ],
'c' :[ 1 , 2 , 3 , 4 , 5 , 6 ]})
query_list = [ 1 , 2 ]
df_2 = df.query( 'c not in @query_list' )[[ 'a' , 'b' ]]
|
使用总结
对于sql中的in或者not in,可以使用query()函数按照某列条件进行过滤,且query()函数返回一个DataFrame,可以直接在后面根据索引获取最终想要的数据。
补充:python query方法_Pandas dataframe.query方法语法
问题:
我想更好地理解PandasDataFrame.query方法以及下面的表达式表示什么:
1
|
match = dfDays.query( 'index > @x.name & price >= @x.target' )
|
@x.name代表什么?
我理解这段代码(一个包含pandas.tslib.Timestamp数据的新列)的结果输出是什么,但不清楚用于获取此最终结果的表达式。
数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
从这里开始: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 ))
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/weixin_42764612/article/details/89600604