如何从 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 中的键 [重复]

如何从 2 个 pkl 文件创建 Python 嵌套字典/将 2 个嵌套字典合并为一个?

如何使用一个键将多个列表值创建到python中的字典中?

从 Python 中的 csv 创建字典中的字典列表

如何从cassandra表值创建python字典?