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