相关疑难解决方法(0)

解析使用Pandas从CSV加载的JSON字符串

我正在使用CSV文件,其中几个列有一个简单的json对象(几个键值对),而其他列是正常的.这是一个例子:

name,dob,stats
john smith,1/1/1980,"{""eye_color"": ""brown"", ""height"": 160, ""weight"": 76}"
dave jones,2/2/1981,"{""eye_color"": ""blue"", ""height"": 170, ""weight"": 85}"
bob roberts,3/3/1982,"{""eye_color"": ""green"", ""height"": 180, ""weight"": 94}"
Run Code Online (Sandbox Code Playgroud)

使用后df = pandas.read_csv('file.csv'),解析stats列并将其拆分为其他列的最有效方法是什么?

大约一个小时后,我唯一能想到的是:

import json
stdf = df['stats'].apply(json.loads)
stlst = list(stdf)
stjson = json.dumps(stlst)
df.join(pandas.read_json(stjson))
Run Code Online (Sandbox Code Playgroud)

这似乎我做错了,考虑到我需要定期在三个列上执行此操作,这是相当多的工作.

*编辑:所需的输出是下面的数据框对象.添加以下代码行以我的(糟糕的)方式:

df = df.join(pandas.read_json(stjson))
del(df['stats'])
In [14]: df

Out[14]:
          name       dob eye_color  height  weight
0   john smith  1/1/1980     brown     160      76
1   dave jones  2/2/1981      blue     170      85
2  bob roberts  3/3/1982     green     180      94
Run Code Online (Sandbox Code Playgroud)

python pandas

32
推荐指数
4
解决办法
3万
查看次数

我想展平Pandas DataFrame中的JSON列

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

id  e
1   {"k1":"v1","k2":"v2"}
2   {"k1":"v3","k2":"v4"}
3   {"k1":"v5","k2":"v6"}
Run Code Online (Sandbox Code Playgroud)

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

id  e.k1    e.k2
1   v1  v2
2   v3  v4
3   v5  v6
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我尝试使用json_normalize,但没有成功

python json normalize pandas

3
推荐指数
2
解决办法
3116
查看次数

标签 统计

pandas ×2

python ×2

json ×1

normalize ×1