iexfinance icon indicating copy to clipboard operation
iexfinance copied to clipboard

Batch fails when missing data

Open shaunpatterson opened this issue 4 years ago • 3 comments

Summary (include Python version)

Python 3.8

print(Stock(['ICUI'], token=token).get_quote(filter='latestPrice'))
print(Stock(['CVLB'], token=token).get_quote(filter='latestPrice'))
print(Stock(['ICUI', 'CVLB'], token=token).get_quote(filter='latestPrice'))

Prints

          latestPrice
ICUI       197.02
Empty DataFrame
Columns: []
Index: [CVLB]
...
ValueError: Mixing dicts with non-Series may lead to ambiguous ordering.

Date/time of issue

Dec 14th, 10:54am

Expected behavior

A dataframe with just ICUI, dropping CVLB

Actual behavior

ValueError

shaunpatterson avatar Dec 14 '20 15:12 shaunpatterson

Thanks. Will look to patch this for a minor release this week.

addisonlynch avatar Dec 14 '20 20:12 addisonlynch

Ahh, now I am unable to reproduce (I was able to yesterday). For your call I get

>>> a = Stock(["ICUI", "CVLB"])
>>> a.get_quote(filter="latestPrice")
      latestPrice
ICUI       201.50
CVLB         7.82

and also:

>>> a = Stock(["ICUI", "BADSYMBOL"])
>>> a.get_quote(filter="latestPrice")
      latestPrice
ICUI       203.61

addisonlynch avatar Dec 16 '20 03:12 addisonlynch

Strange.

print(Stock(['ICUI', 'BADDD'], token=token).get_quote(filter='latestPrice'))

works for me

print(Stock(['ICUI', 'CVLB'], token=token).get_quote(filter='latestPrice'))

is still throwing the ValueError for me.

In iexfinance/base.py _format_output out is equal to

{'ICUI': {'quote': {'latestPrice': 205.34}}, 'CVLB': {}}

but

{'ICUI': {'quote': {'latestPrice': 205.34}}}

when I try 'ICUI' and 'BADSYMBOL'

{'ICUI': {'quote': {'latestPrice': 205.34}}, 'CVLB': {}}

This dict gets passed down to pd.DataFrame(). I don't see an easy way of fixing this...

shaunpatterson avatar Dec 17 '20 12:12 shaunpatterson