query
и get_fundamentals
- это некоторые приложения api
, не имеет значения, чтобы указать, какой api
.
Ниже приведен мой фрагмент для использования фрейма данных.
code = "some"
caldate = [datetime.date(2003, 12, 31),datetime.date(2004, 12, 31),
datetime.date(2005, 12, 31), datetime.date(2006, 12, 31)]
for curdate in caldate:
q = query(valuation.market_cap).filter(valuation.code == code)
y = get_fundamentals(q,date=curdate)
print(y)
Вывод такой, как показано ниже:
Empty DataFrame
Columns: [market_cap]
Index: []
Empty DataFrame
Columns: [market_cap]
Index: []
market_cap
0 215.2808
market_cap
0 828.9395
Я ожидаю создать фрейм данных, содержащий все выходные данные.
container
market_cap
0 NaN
1 NaN
2 215.2808
3 828.9395
type(container)
<class 'pandas.core.frame.DataFrame'>
У меня есть попытка (ошибка) с concat:
result = pd.DataFrame(columns=['market_cap'])
for curdate in caldate:
q = query(valuation.market_cap).filter(valuation.code == code)
y = get_fundamentals(q,date=curdate)
pd.concat([result,y],axis = 0)
Вывод:
Empty DataFrame
Columns: [market_cap, market_cap]
Index: []
Empty DataFrame
Columns: [market_cap, market_cap]
Index: []
market_cap market_cap
0 NaN 215.2808
market_cap market_cap
0 NaN 828.9395
>>> result
Empty DataFrame
Columns: [market_cap]
Index: []
Еще одна попытка (ошибка):
result = pd.DataFrame(columns=['market_cap'])
for curdate in caldate:
q = query(valuation.market_cap).filter(valuation.code == code)
y = get_fundamentals(q,date=curdate)
result = result.append(y)
Распечатайте результат, чтобы увидеть, что я получаю:
result
market_cap
0 215.2808
0 828.9395
желаемый результат:
market_cap
0 NaN
1 NaN
2 215.2808
3 828.9395
Первые два пустых были потеряны.
Еще одна попытка (успех): установите список для добавления вывода, затем назначьте его для фрейма данных.
result = []
for curdate in caldate:
q = query(valuation.market_cap).filter(valuation.code == code)
y = get_fundamentals(q,date=curdate)['market_cap']
if y.empty:
result.append(numpy.nan)
else:
result.append(y[0])
container = pd.DataFrame()
container['market_cap'] = result
Возможно, есть более простой и более pythoni c способ достичь моих ожиданий.
@ YOLO, распечатать (результат) в соответствии с вашим кодом.
result
market_cap
0 Empty DataFrame
Columns: [market_cap]
Index: []
1 Empty DataFrame
Columns: [market_cap]
Index: []
2 market_cap
0 215.2808
3 market_cap
0 828.9395
Показать каждый элемент в результате.
>>> result["market_cap"][0]
Empty DataFrame
Columns: [market_cap]
Index: []
>>> result["market_cap"][1]
Empty DataFrame
Columns: [market_cap]
Index: []
>>> result["market_cap"][2]
market_cap
0 215.2808
>>> result["market_cap"][3]
market_cap
0 828.9395
Мои ожидания:
>>> result["market_cap"][0]
nan
>>> result["market_cap"][1]
nan
>>> result["market_cap"][2]
215.2808
>>> result["market_cap"][3]
828.9395