首页 > 解决方案 > 从包含几行中的字典的列中提取值

问题描述

我有一个嵌套的 json 文件,我将其转换为 Pandas 数据框:

tabell = pd.DataFrame.from_records(r.response['trades'])

它看起来像这样:

id instrument price initialUnits  takeProfitOrder                                      
0 AUD_CAD  0.90  10000  NaN
1 AUD_CAD  0.89  10000  {'id': '379895', 'createTime': '2020-06-15T12:...

我想从内部字典中提取“id”字段,并将其保留为该列中的值。

如果我写这个,它的工作原理:

tabell.loc[1]['takeProfitOrder'] = tabell.loc[1]['takeProfitOrder']['id']

但是,我不知道是哪几行,而且是上千行。因此我不想用循环进行迭代。

但如果我只是写,这是我想要的,它会失败:

tabell['takeProfitOrder'] = tabell['takeProfitOrder']['id']

显然它在第一行失败,因为它包含“NaN”而不是字典。

实现这一目标的最有效方法是什么。这个操作需要在相对较大的数据集上进行很多次。因此,我需要一种有效的方法来完成它。

有什么建议么?

标签: pythonpandasdataframe

解决方案


用于Series.str.get可能的处理缺失值:

tabell['takeProfitOrder'] = tabell['takeProfitOrder'].str.get('id')

推荐阅读