gpt4 book ai didi

python - 如何在不循环的情况下将 python JSON 行转换为数据帧列

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:10 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何在不使用循环的情况下执行以下操作。

我有一个数据框,其中有多个列,其中一列具有 JSON 字符串。我想做的是将 JSON 字符串列转换为数据框中它们自己的列。例如我有以下数据框:

Column 1 | column 2 | Json Column

123 | ABC | {"anotherNumber":345,"anotherString":"DEF"}

我想转换成这样:

Column 1 | column 2 | anotherNumber | anotherString

123 | ABC | 345 | DEF

最佳答案

如果需要,您可以先通过 json.loadsJson Column 转换为 dict:

import json

df = pd.DataFrame({'Column 1':[123],
'Column 2':['ABC'],
'Json Column':['{"anotherNumber":345,"anotherString":"DEF"}']})
print (df)

Column 1 Column 2 Json Column
0 123 ABC {'anotherString': 'DEF', 'anotherNumber': 345}

print (type(df.ix[0,'Json Column']))
<class 'str'>

df['Json Column'] = df['Json Column'].apply((json.loads))

print (type(df.ix[0,'Json Column']))
<class 'dict'>

然后生成列表列表并从构造函数创建Dataframe:

print (df['Json Column'].values.tolist())
[{'anotherString': 'DEF', 'anotherNumber': 345}]

df1 = pd.DataFrame(df['Json Column'].values.tolist())
print (df1)
anotherNumber anotherString
0 345 DEF

最后concat到原始版本,其中 Json Column 已被 drop 删除:

print (pd.concat([df.drop('Json Column', axis=1), df1], axis=1))
Column 1 Column 2 anotherNumber anotherString
0 123 ABC 345 DEF

关于python - 如何在不循环的情况下将 python JSON 行转换为数据帧列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240520/

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