Pandas处理Snowflake数据生成LoopVOC API要求的嵌套数组JSON格式问题
可行解决方法
你已经完成了核心的数据聚合逻辑,仅需要对生成的结构做最小改动即可匹配API要求:
方案1:直接转换已生成结构(改动量最小,推荐)
你当前输出的fields已经是符合要求的对象,仅需要额外包裹一层数组即可,修改代码如下:
j = (df.groupby(['text','date','channel','sentiment'], as_index=False) .apply(lambda x:x[[ 'product', 'segment', '2b6276da-b135-4258-9971-cb08c070d859', '7b84b8fc-5494-4fcb-bac7-ca91dc8faa32', '5042388c-3144-4b5d-9aab-f0d03345646b', '27cf2f54-3686-48c9-bfe4-5a6c70e90854', '03de58c3-4ea0-4286-b5c4-1b8cef53646d', 'edee1277-1668-4e89-b206-5de08e8b3dc5', 'c9db7ba2-3c9f-40a8-852e-20ce5e8a5e8f', 'cb8d1d94-8976-4b31-9844-e47857226c2d', '806335a9-e8ea-45b4-9904-54c52f1698e4', 'b2dfd157-436f-43a2-8ca2-36b5fe1fae54', '511cfd95-8250-4796-97e1-9b02fb91e147', '69c06db4-cc43-4dbb-abcb-6d5f40bfef08', 'ecdf55c5-bce9-4bc6-bca2-921d7c140dc2', '6b711ef9-b789-48b5-97f3-7183bc5d6fa7', 'bfbc0bf1-49ca-4cb0-a76c-82999034e7cc', 'ee64e90c-0116-4fba-992d-6f6df1b0cfef', '3c6edd01-bfa6-46c0-a9ea-5ffc01453f51' ]].to_dict('records')) .rename(columns={None:'fields'}) .to_json(orient='records')) # 新增字段转换逻辑 parsed_data = json.loads(j) for item in parsed_data: item['fields'] = [item['fields']] # 按要求序列化输出 data = json.dumps(parsed_data, indent=2, sort_keys=True) print(data)
方案2:修改pandas聚合逻辑
如果不想后续做额外转换,也可以在apply阶段就强制保留列表结构,修改apply的返回逻辑即可:
.apply(lambda x: [x[[...]].to_dict('records')[0]])
内容的提问来源于stack exchange,提问作者Matthew Skinner
相关产品推荐
相关产品推荐

