jod*_*oox 9 python json pandas
我正在从数据库(50k +行)读取数据,其中一列存储为JSON.我想把它提取到一个pandas数据帧中.下面的代码片段工作正常,但效率相当低,并且在对整个数据库运行时真的需要永远.请注意,并非所有项都具有相同的属性,并且JSON具有一些嵌套属性.
我怎么能更快?
import pandas as pd
import json
df = pd.read_csv('http://pastebin.com/raw/7L86m9R2', \
header=None, index_col=0, names=['data'])
df.data.apply(json.loads) \
.apply(pd.io.json.json_normalize)\
.pipe(lambda x: pd.concat(x.values))
###this returns a dataframe where each JSON key is a column
Run Code Online (Sandbox Code Playgroud)
piR*_*red 14
json_normalize采用已处理的json字符串或pandas系列此类字符串.
pd.io.json.json_normalize(df.data.apply(json.loads))
Run Code Online (Sandbox Code Playgroud)
建立
import pandas as pd
import json
df = pd.read_csv('http://pastebin.com/raw/7L86m9R2', \
header=None, index_col=0, names=['data'])
Run Code Online (Sandbox Code Playgroud)
我觉得你可以先转换string柱data来dict,然后创建list的numpy arrays通过values和最后一个DataFrame.from_records:
df = pd.read_csv('http://pastebin.com/raw/7L86m9R2', \
header=None, index_col=0, names=['data'])
a = df.data.apply(json.loads).values.tolist()
print (pd.DataFrame.from_records(a))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16337 次 |
| 最近记录: |