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