簡體   English   中英

如果 header 名稱包含 str

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM