gpt4 book ai didi

python - 基于列中嵌套的 JSON 添加 DataFrame 列

转载 作者:行者123 更新时间:2023-11-28 22:13:26 25 4
gpt4 key购买 nike

我有以下 Pandas Dataframe(名为 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

我使用以下代码片段获得了结果:

dx['oid']=None
for i in dx.index:
dx['oid'][i]=dx.at[i,'_id']['$oid']

这给了我我正在寻找的东西,但是速度非常非常慢。填充示例的列需要 3-4 分钟,该列只有 5 行!

如何优化基于其他具有 JSON 值的列的新列的创建?

我无法使用正则表达式,因为嵌套 JSON 比示例中的核心复杂。

最佳答案

这是object列类型,其中在单元格内包含单个dict,因此

df['$oid']=df['_id'].map(lambda x : x['$oid'])

或者

s=df['_id'].apply(pd.Series)
s
#df=pd.concat([df,s],axis=1)
Out[601]:
$oid
0 5b9058462f38434ab0d85cd3
1 5b9058462f38434ab0d85ce9
2 5b9058462f38434ab0d85ced
3 5b9058462f38434ab0d85cee
4 5b9058462f38434ab0d85cef

关于python - 基于列中嵌套的 JSON 添加 DataFrame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53951554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com