[英]Hello, I need to create a python query that select a maximum and minimum value in every row of the selected columns
[英]Python Pandas maximum and minimum values of every row if header name contain str
我有一個像這樣的df,我想只從包含'ask'的標題中獲取每行的最小值,如果標題名稱中包含'bid',則從每行中獲取最大值。 :
symbol bid_Binance ask_Binance bid_Kucoin ask_Kucoin bid_Mexc ask_Mexc
819 GRINUSDT NaN NaN 0.107270 0.108250 NaN NaN
424 MITXUSDT NaN NaN 0.005252 0.005300 0.009010 0.009860
預期結果:
symbol bid_Binance ask_Binance bid_Kucoin ask_Kucoin bid_Mexc ask_Mexc min_ask max_bid
819 GRINUSDT NaN NaN 0.107270 0.108250 NaN NaN 0.108250 0.107270
424 MITXUSDT NaN NaN 0.005252 0.005300 0.009010 0.009860 0.005300 0.009010
我試過這種方式,它需要每行的最大值和最小值,但我不知道如何過濾 header 名稱
df_merged['min_'] = df_merged.min(axis=1)
df_merged['max_'] = df_merged.max(axis=1)
您可以使用帶有錨定正則表達式的filter
:
df['min_ask'] = df.filter(regex='^ask').min(1)
df['max_bid'] = df.filter(regex='^bid').max(1)
如果您不想錨定到開頭,可以使用like
:
df['min_ask'] = df.filter(like='ask').min(1)
df['max_bid'] = df.filter(like='bid').max(1)
output:
symbol bid_Binance ask_Binance bid_Kucoin ask_Kucoin bid_Mexc ask_Mexc min_ask max_bid
819 GRINUSDT NaN NaN 0.107270 0.10825 NaN NaN 0.10825 0.10727
424 MITXUSDT NaN NaN 0.005252 0.00530 0.00901 0.00986 0.00530 0.00901
您可以按如下方式創建min_ask
:
df.loc[:, df.columns.str.contains('ask')].apply(min, axis=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.