python - 我想展平 Pandas DataFrame 中的 JSON 列

标签 python json pandas normalize

我有一个输入数据框 df 如下:

id  e
1   {"k1":"v1","k2":"v2"}
2   {"k1":"v3","k2":"v4"}
3   {"k1":"v5","k2":"v6"}

我想“展平”“e”列,这样我得到的数据框是:

id  e.k1    e.k2
1   v1  v2
2   v3  v4
3   v5  v6

我该怎么做?我尝试使用 json_normalize 但没有取得多大成功

最佳答案

这是一种使用pandas.io.json.json_normalize():的方法

from pandas.io.json import json_normalize
df = df.join(json_normalize(df["e"].tolist()).add_prefix("e.")).drop(["e"], axis=1)
print(df)
#  e.k1 e.k2
#0   v1   v2
#1   v3   v4
#2   v5   v6

但是,如果您的列实际上是 str 而不是 dict,那么您首先必须使用 json.loads( ):

import json
df = df.join(json_normalize(df['e'].map(json.loads).tolist()).add_prefix('e.'))\
    .drop(['e'], axis=1)

关于python - 我想展平 Pandas DataFrame 中的 JSON 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49822874/

相关文章:

python - Django - 没有名为 PIL 的模块

python - 在 Pandas 中查询满足一组条件的最近对象(及时)

python - 如何在python中有条件地选择上一行的值?

javascript - 循环遍历仅以特定模式开头的 JSON 对象

python - Python中数据的高效拆分

python - 绘制 GeoDataFrame 一行的几何图形

排序列表的 Pythonic 方式

python - 时间格式之间的转换

jquery ajax post 数据类型 : 'JSON' works on Android but fails on iPhone4

json - Go Lang RESTful API 不工作 JSON