Pandas读取json格式数据
Posted
技术标签:
【中文标题】Pandas读取json格式数据【英文标题】:Pandas read json format data 【发布时间】:2019-08-26 23:01:42 【问题描述】:我在一个数据框中有一个 json 列。
整个数据框看起来像
“customDimensions”列是json列,数据是这样的
['index': '4', 'value': 'North America']
我想将该列展平为以下 2 列 customDimensions.index、customDimensions.value
我该怎么做?
【问题讨论】:
是否可以添加json
格式的数据样本?
如果您要使用嵌套的 JSON 创建数据框,请使用 json_normalize pandas.pydata.org/pandas-docs/stable/reference/api/…
【参考方案1】:
您可以使用列表推导和ast.literal_eval
转换为dict 列表,DataFrame.pop
用于提取列,lastDataFrame.join
用于原始:
#if values are strings
print (type(df.loc[0,'customDimension']))
<class 'str'>
import ast
df1 = (pd.DataFrame([ast.literal_eval(x)[0] for x in df.pop('customDimension')])
.add_prefix('customDimensions.'))
#if values are lists
print (type(df.loc[0,'customDimension']))
<class 'list'>
df = pd.DataFrame([x[0] for x in df.pop('customDimension')]).add_prefix('customDimensions.')
df = df.join(df1)
如果来源是json
,最好使用json.json_normalize
。
#not tested, depends of json format and data
df = json_normalize(j, 'customDimension', ['channelGrouping','date'])
【讨论】:
你也可以使用 apply。def getCol(x,col): return x[col] df["customDimensions.index"] = df["customDimensions"].apply(lambda x:getCol(x,"index"))
你太棒了!我的数据是以上是关于Pandas读取json格式数据的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Python pandas 读取 json 数组数据
如何将 pandas 数据框导出为 json 并保留原始日期时间格式?
为 Django 模板中的 Highcharts 从 Pandas 数据帧格式化 JSON