Search code examples
pythondataframeapikeyerrorbinance

Get info from str-list


My info-resource (binance-api) returns info as string list. Can you help me and explain how can I take variable 'initialLeverage':

Code

def long():
    lever = client.futures_leverage_bracket()
    lever = pd.DataFrame(lever)
    print(lever)
    #vol()

Terminal

        symbol                                           brackets
0    SUSHIUSDT  [{'bracket': 1, 'initialLeverage': 25, 'notion...
1      BTSUSDT  [{'bracket': 1, 'initialLeverage': 50, 'notion...
2      INJUSDT  [{'bracket': 1, 'initialLeverage': 25, 'notion...
3      TRXBUSD  [{'bracket': 1, 'initialLeverage': 20, 'notion...
4      ZRXUSDT  [{'bracket': 1, 'initialLeverage': 50, 'notion...
..         ...                                                ...
220  OCEANUSDT  [{'bracket': 1, 'initialLeverage': 50, 'notion...
221  LEVERBUSD  [{'bracket': 1, 'initialLeverage': 20, 'notion...
222    CHZUSDT  [{'bracket': 1, 'initialLeverage': 50, 'notion...
223   DUSKUSDT  [{'bracket': 1, 'initialLeverage': 20, 'notion...
224   CTSIUSDT  [{'bracket': 1, 'initialLeverage': 20, 'notion...

[225 rows x 2 columns]

Endpoint - initialLeverage

Thx in advance)

I've tried to convert it to different formats but it is full one string, so it didn't help me

I've also tried to make "double pd" as

def long():
    lever = client.futures_leverage_bracket()
    lever = pd.DataFrame(lever)
    lev = lever['brackets']
    lev = pd.DataFrame(lev)
    lev = lev['initialLeverage']
    print(lever)
    #vol()

But it doesn't working and returns me KeyError: 'initialLeverage'


Solution

  • you can use a lambda function. This creates a new column in the dataframe x and saves the data in a list.

    df['initialLeverage']=df['brackets'].apply(lambda x: [i['initialLeverage'] for i in x])
    

    Details:

    #create sample df
    df=pd.DataFrame(data={'symbol':['SUSHIUSDT','BTSUSDT'],'brackets':[[{'bracket': 1, 'initialLeverage': 25, 'notion':'abc'}],
                                                                       [{'bracket': 1., 'initialLeverage': 50, 'notion':'foo'}]]})
    print(df)
    '''
        symbol                          brackets
    0   SUSHIUSDT   [{'bracket': 1, 'initialLeverage': 25, 'notion': 'abc'}]
    1   BTSUSDT     [{'bracket': 1.0, 'initialLeverage': 50, 'notion': 'foo'}]
    
    '''
    
    df['initialLeverage']=df['brackets'].apply(lambda x: [i['initialLeverage'] for i in x])
    print(df)
    
    '''
    
        symbol                  brackets                                      initialLeverage
    0   SUSHIUSDT   [{'bracket': 1, 'initialLeverage': 25, 'notion': 'abc'}]    [25]
    1   BTSUSDT     [{'bracket': 1.0, 'initialLeverage': 50, 'notion': 'foo'}]  [50]
    
    '''
    #if initialLeverage is always single value.
    df['initialLeverage']=df['brackets'].apply(lambda x: [i['initialLeverage'] for i in x][0])
    
    symbol brackets initialLeverage
    0 SUSHIUSDT [{'bracket': 1, 'initialLeverage': 25, 'notion': 'abc'}] 25
    1 BTSUSDT [{'bracket': 1.0, 'initialLeverage': 50, 'notion': 'foo'}] 50