如何从 python 中的字典创建 ndjson 对象?
Posted
技术标签:
【中文标题】如何从 python 中的字典创建 ndjson 对象?【英文标题】:How to create an ndjson object from a dictionary in python? 【发布时间】:2019-08-21 19:25:26 【问题描述】:我需要帮助从领先的广告平台上的以下解析数据创建 NDJSON 对象。我打算将数据上传到 bigquery。
我成功地使用 pandas 创建了一个 NDJSON,但我无法控制数据类型,并且在加载过程中会产生错误。 [特别是在 Int 和 Floats 之间]
这是我的对象
datadict =
'start_time': ['2019-03-26','2019-03-27','2019-03-28'],
'id': ['campaignid10', 'campaignid10', 'campaignid10'],
'impression': [100, 200, 0],
'tweets' : [10, None, None]
期望的输出:None 也应该为空
'start_time':'2019-03-26', 'id':'campaignid10', 'impression':100, 'tweets':10
'start_time':'2019-03-27', 'id':'campaignid10','impression':200, 'tweets':null
'start_time':'2019-03-28', 'id':'campaignid10', 'impression':0, 'tweets':null
【问题讨论】:
【参考方案1】:import functools
import operator
import ndjson
def transform(dd, days):
obs = days
data = [[lst[idx] for lst in list(dd.values())] for idx in range(obs)]
pre_label = [[elm]*obs for elm in list(dd.keys())]
labels = [[lst[idx] for lst in pre_label] for idx in range(obs)]
return [dict(zip(labels[i], data[i])) for i in range(obs)]
jsonList = [transform(_dd, 3) for _dd in dd]
jsonList = functools.reduce(operator.iconcat, jsonList, [])
output_ndjson = ndjson.dumps(jsonList)
print(output_ndjson)
如果有人可以帮助我简化解决方案,我将不胜感激?
【讨论】:
以上是关于如何从 python 中的字典创建 ndjson 对象?的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何从列表中的字典创建 DataFrame 列 [重复]
如何从 CSV 创建字典,其中两列作为 Python 中的键 [重复]