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

12 浏览
0 Comments

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

我正在处理包含简单JSON对象(多个键值对)的CSV文件,而其他列则是普通列。这是一个例子:

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}"

在使用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))

这似乎是错误的做法,而且考虑到我经常需要在三个列上执行此操作,这是相当繁琐的工作。

期望的输出是下面的数据框对象。使用以下代码通过我的(糟糕的)方法得到:

df = df.join(pandas.read_json(stjson))

del(df['stats'])

df输出:

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

0