question

Upvotes
Accepted
3 0 1 3

Retrieving datatype name using retName=True in DSWS

Tried retName=True keyword argument to retrieve datatype name but it's not working. What is wrong with this code?

df_ind=ds.get_data (tickers='TOKYOSE', fields=["A18PE"], start="2018-01-31", freq="M", retName=True)

df_ind

datastream-apidsws-api
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.

Upvote
Accepted
79.2k 251 52 74

@tserenbat.uyanga

I am using DatastreamDSWS-1.0.8. When setting retName to True, it will print the datatype name on the screen.

You can use another library, such as PyDatastream.

from pydatastream import Datastream
DS = Datastream(username="username", password="password")
res, meta = DS.fetch(['TOKYOSE'], fields=['A18PE'], date_from='2018-01-31',freq='M', return_metadata=True)
meta['DataTypeNames']['A18PE']

1611541076248.png (17.1 KiB)
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.

Thank you very much for the comment. I was able to display datatype name.

Is there anyway to retrieve this datatype name when export it to Excel as csv.

I tried following but couldn't get the name in the csv.

py1.jpg (77.2 KiB)
Upvotes
79.2k 251 52 74

@tserenbat.uyanga

You have two options:

1. Use PyDatastream and then rename the column name

res, meta = DS.fetch(['TOKYOSE'], fields=['A18PE'], date_from='2018-01-31',freq='M', return_metadata=True)
res.rename(columns = {'A18PE':meta['DataTypeNames']['A18PE']}, inplace = True) 
res

2. If you still use DatastreamDSWS, the process is quite complex and prone to error. First, you need to redirect the output to a variable. Then, convert the output to JSON, retrieved the data type name, and rename the column name

import sys
import io
import json
old_stdout = sys.stdout
new_stdout = io.StringIO()
sys.stdout = new_stdout
df_ind=ds.get_data (tickers='TOKYOSE', fields=["A18PE"], start="2018-01-31", freq="M", retName=True)
output = new_stdout.getvalue()
sys.stdout = old_stdout 
metadata = json.loads(output.replace("'","\""))
df_ind.rename(columns = {'A18PE':metadata["A18PE"]}, inplace = True) 
df_ind
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.