Using Python API: Check all elements in a list are a valid RIC

My ultimate aim is to be able to do a Ekion Python API query like this

df_ric, err = ek.get_data(RIC_List,

['TR.PriceClose','TRDPRC_1'],)


Where RIC_List has 1800 elements, 99% of which are RICs in string format and the remaining 1% are not RICs and need to be skipped automatically. (Querying each element using a "try" function takes too long, so I hope the 1 big query is faster).


My thoughts are to do this in two steps


1. Feed the list into 1 Reuters Ekion Python API query that returns if each element in the list is in fact a RIC, with the output being a smaller list "RIC_List2" with only RICs.

2. Feed "RIC_List2" into the initial code written above to get all the data i need.


Please let me know if it is possible to do something like (1.) or any other ideas


to put in another way I would want something like

test_list= [[nan],'ASML.AS','adjfoi;dsa','NOVN.S']


to eventually return


Instrument Price Close TRDPRC_1

0 ASML.AS 547.1 554.6

1 NOVN.S 91.94 88.09

(04/10/2023, 13:55 UK Time)



Thanks in advance


Best Answer

  • raksina.samasiri
    Answer ✓

    Hi @toby.mcmanners ,

    Can it be this way

    # import libraries
    import refinitiv.data.eikon as ek
    ek.set_app_key('DEFAULT_CODE_BOOK_APP_KEY')
    import numpy as np

    # define ric list (with invalid values)
    RIC_List=[None,'ASML.AS','adjfoi;dsa','NOVN.S']

    # remove None value as it cannot be passing into get_data function
    ric_list_not_none = [x for x in RIC_List if x is not None]

    # use the ric list above to retrieve data on field 'TR.RIC'
    df_ric, err = ek.get_data(ric_list_not_none,
    ['TR.RIC'])

    # drop row with empty value in RIC column
    df_ric['RIC'].replace('', np.nan, inplace=True)
    df_ric.dropna(subset=['RIC'], inplace=True)

    # convert RIC column to RIC list
    valid_ric_list = df_ric['RIC'].to_list()

    # retrive the data
    df_ric, err = ek.get_data(valid_ric_list,
    ['TR.PriceClose','TRDPRC_1'])
    df_ric

    1696427005358.png