question

Upvotes
Accepted
66 2 5 7

SCREEN syntax changes when moving from Eikon Python API to Workspace Python API

I have a SCREEN implementation in Eikon API using Python that has been working fine for many months:

instrument = "SCREEN(U(IN(Equity(active,public,primary,countryprimaryquote))),IN(TR.ExchangeMarketIdCode,XNYS),BETWEEN(TR.Price52WeekHighDate,20240628,20240628))"
df, err = ek.get_data(instrument,['TR.CommonName','TR.PRICECLOSE'])

The above works fine from EIKON Data API


To migrate to Workspace, I must get a similar SCREEN working in Workspace. Here is my attempt:

universe = "SCREEN(U(IN(Equity(active,public,primary,countryprimaryquote))),IN(TR.ExchangeMarketIdCode,XNYS),BETWEEN(TR.Price52WeekHighDate,20240628,20240628))"
fields = ['TR.CommonName','TR.PRICECLOSE']
df, err = rd.get_data(universe, fields)


Here are the errors I am getting:

D:\Users\SERVERMTL\AppData\Local\Programs\Python\Python39\lib\site-packages\refinitiv\data\_tools\_dataframe.py:192:FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
Traceback (most recent call last):
  File "C:\PNC\Stats\Python\GetHighsLows.py", line 31, in <module>
    df, err = rd.get_data(universe, fields)
ValueError: too many values to unpack (expected 2)


The ValueError suggests to me that the SCREEN is called, but not sure what "too many values to unpack" means.

Is SCREEN not available in Workspace? Or are there other errors I have made?

(Also, should I be worrying about the 'replace' warning?)

workspace-data-api#technologypython apiscreener
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

· Write an Answer
Upvotes
Accepted
84.6k 287 53 77

@dgarrard

Thank you for reaching out to us.

The rd.get_data method returns only a dataframe. It doesn't retrun an error. Therefore, the code looks like this:

universe = "SCREEN(U(IN(Equity(active,public,primary,countryprimaryquote))),IN(TR.ExchangeMarketIdCode,XNYS),BETWEEN(TR.Price52WeekHighDate,20240628,20240628))"
fields = ['TR.CommonName','TR.PRICECLOSE']
df = rd.get_data(universe, fields)

To handle the error, please refer to this discussion.

Regarding the replace warning, it should be fine.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.