【发布时间】:2018-12-02 01:27:15
【问题描述】:
我有一个巨大的 CSV 文件(3.5GB 并且每天都在变大),其中包含正常值和一个名为“元数据”的列,其中包含嵌套的 JSON 值。我的脚本如下,目的只是将 JSON 列转换为每个键值对的普通列。我正在使用 Python3(Anaconda;Windows)。
import pandas as pd
import numpy as np
import csv
import datetime as dt
from pandas.io.json import json_normalize
for df in pd.read_csv("source.csv", engine='c',
dayfirst=True,
encoding='utf-8',
header=0,
nrows=10,
chunksize=2,
converters={'Metadata':json.loads}):
## parsing code comes here
with open("output.csv", 'a', encoding='utf-8') as ofile:
df.to_csv(ofile, index=False, encoding='utf-8')
并且该列具有以下格式的 JSON:
{
"content_id":"xxxx",
"parental":"F",
"my_custom_data":{
"GroupId":"NA",
"group":null,
"userGuid":"xxxxxxxxxxxxxx",
"deviceGuid":"xxxxxxxxxxxxx",
"connType":"WIFI",
"channelName":"VOD",
"assetId":"xxxxxxxxxxxxx",
"GroupName":"NA",
"playType":"VOD",
"appVersion":"2.1.0",
"userEnvironmentContext":"",
"vodEncode":"H.264",
"language":"English"
}
}
所需的输出是将上述所有键值对作为列。数据框将具有其他非 JSON 列,我需要添加从上述 JSON 解析的列。我尝试了json_normalize,但我不确定如何将json_normalize 应用到Series 对象,然后将其转换(或分解)为多个列。
【问题讨论】:
标签: python json python-3.x pandas csv