繁体   English   中英

如何将字典转换为 Pandas df?

[英]How to convert a dictionary to Pandas df?

我已尝试使用以下代码从 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 转换为 pandas dataframe。 但是得到以下 output....

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'}

如何制作正确的 dataframe?

这应该可以解决问题:

pd.DataFrame.from_records([tick_data])

假设您有一个像这样的字典: d = {'Saha':1,'Sourav':2,'family': 3} 然后,我们必须像这样提取字典项 dict_items = d.items() 现在转换 dict_items进入列表 item_list = list(dict_items) 最后,使用 pandas df = pd.DataFrame(item_list) 将列表转换为 dataframe

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM