我已嘗試使用以下代碼從 api 獲取實時資料。
feed_opened = False
def event_handler_feed_update(tick_data):
print(tick_data)
# print("feed event: {0}".format(time.strftime('%d-%m-%Y %H:%M:%S')) str(tick_data))
# dctmessage = {k:[v] for k,v in tick_data.items()}
df1 = pd.DataFrame.from_dict(tick_data)
# df1.to_csv("E:/Python/tickdata.csv",mode="a", index=False)
print (df1)
def open_callback():
global feed_opened
feed_opened = True
api.start_websocket(subscribe_callback=event_handler_feed_update, socket_open_callback=open_callback)
while(feed_opened==False):
pass
api.subscribe("CDS|5316", feed_type="d")
我試圖將 tick_data 轉換為熊貓資料框。但是得到以下輸出....
ERROR:websocket:error from callback <bound method NorenApi.__on_data_callback of <api_helper.ShoonyaApiPy object at 0x00000000056FCD00>>: If using all scalar values, you must pass an index
{'t': 'dk', 'e': 'CDS', 'tk': '5316', 'ts': 'USDINR24DEC21C76', 'pp': '4', 'ls': '1', 'ti': '0.0025', 'lp': '0.3075', 'pc': '-33.15', 'ft': '1639640923', 'o': '0.4225', 'h': '0.4250', 'l': '0.2725', 'c': '0.4600', 'ap': '0.3550', 'v': '13390', 'ltq': '2', 'ltt': '13:17:41', 'tbq': '2289', 'tsq': '1163', 'bp1': '0.3000', 'sp1': '0.3075', 'bp2': '0.2975', 'sp2': '0.3100', 'bp3': '0.2950', 'sp3': '0.3125', 'bp4': '0.2875', 'sp4': '0.3250', 'bp5': '0.2850', 'sp5': '0.3275', 'bq1': '21', 'sq1': '18', 'bq2': '103', 'sq2': '1', 'bq3': '50', 'sq3': '150', 'bq4': '1', 'sq4': '18', 'bq5': '20', 'sq5': '24', 'bo1': '2', 'so1': '1', 'bo2': '2', 'so2': '1', 'bo3': '1', 'so3': '2', 'bo4': '1', 'so4': '3', 'bo5': '2', 'so5': '3', 'uc': '0.7950', 'lc': '0.1250', 'oi': '35759'}
如何制作正確的資料框?
uj5u.com熱心網友回復:
這應該可以解決問題:
pd.DataFrame.from_records([tick_data])
uj5u.com熱心網友回復:
讓我們假設你有一個像這樣的字典:
d = {'Saha':1,'Sourav':2,'family': 3}
然后,我們必須像這樣提取字典項
dict_items = d.items()
現在將 dict_items 轉換為串列
item_list = list(dict_items)
最后,使用 Pandas 將串列轉換為資料框
df = pd.DataFrame(item_list)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/383071.html
上一篇:如何將longefficient_apriori.rules.Rule保存到Pandasdf
下一篇:根據最高和最低列值過濾行
