我有一个输入数据框 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/