如何将字典转换为 Pandas df?

Posted

技术标签:

【中文标题】如何将字典转换为 Pandas df?【英文标题】:How to convert a dictionary to Pandas df? 【发布时间】:2022-01-19 08:09:03 【问题描述】:

我已尝试使用以下代码从 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 数据框。但是得到以下输出....

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'

如何制作合适的数据框?

【问题讨论】:

【参考方案1】:

这应该可以解决问题:

pd.DataFrame.from_records([tick_data])

【讨论】:

【参考方案2】:

假设你有一本字典 喜欢:

d = 'Saha':1,'Sourav':2,'family': 3

然后,我们必须像这样提取字典项

dict_items = d.items()

现在将 dict_items 转换为列表

item_list = list(dict_items)

最后,使用 pandas 将列表转换为数据框

df = pd.DataFrame(item_list)

【讨论】:

试过但没有用。

以上是关于如何将字典转换为 Pandas df?的主要内容,如果未能解决你的问题,请参考以下文章

将json dict转换为pandas df中的行

如何将 DataFrame 中的每一行/单元格值转换为 pandas 中的字典列表?

如何将 Pandas DataFrame 中字典的字符串表示形式转换为新列?

将 pandas 转换为定义用于键值的列的字典

如何使用熊猫将csv转换为字典

使用元组键将 Pandas 数据框转换为字典以进行三元图