【发布时间】:2019-05-25 20:48:53
【问题描述】:
我有以下 Pandas 数据框(名为 dx):
_id user_type
0 {'$oid': '5b9058462f38434ab0d85cd3'} 1
1 {'$oid': '5b9058462f38434ab0d85ce9'} 1
2 {'$oid': '5b9058462f38434ab0d85ced'} 1
3 {'$oid': '5b9058462f38434ab0d85cee'} 1
4 {'$oid': '5b9058462f38434ab0d85cef'} 1
它来自一个大 JSON(比本示例更多或更少 500.000 行和更多列),您可以看到 _id 包含一个嵌套的 JSON。
对于这个例子,我的目标是获取一个名为oid 的新列,其oid 代码:
_id user_type oid
0 {'$oid': '5b9058462f38434ab0d85cd3'} 1 5b9058462f38434ab0d85cd3
1 {'$oid': '5b9058462f38434ab0d85ce9'} 1 5b9058462f38434ab0d85ce9
2 {'$oid': '5b9058462f38434ab0d85ced'} 1 5b9058462f38434ab0d85ced
3 {'$oid': '5b9058462f38434ab0d85cee'} 1 5b9058462f38434ab0d85cee
4 {'$oid': '5b9058462f38434ab0d85cef'} 1 5b9058462f38434ab0d85cef
我使用以下sn-p实现了结果:
dx['oid']=None
for i in dx.index:
dx['oid'][i]=dx.at[i,'_id']['$oid']
这给了我我正在寻找的东西,但它非常非常慢。填充示例的列需要 3-4 分钟,该列只有 5 行!
如何根据其他具有 JSON 值的列来优化新列的创建?
我不能使用正则表达式,因为嵌套的 JSON 是核心复杂,然后是示例中的那个。
【问题讨论】:
标签: python json python-3.x pandas dataframe