【发布时间】:2021-03-29 03:02:03
【问题描述】:
我将数据存储在 pandas 数据框中,我想将 tat 转换为 JSON 格式。可以使用以下代码复制示例数据
data = {'Product':['A', 'B', 'A'],
'Zone':['E/A', 'A/N', 'E/A'],
'start':['08:00:00', '09:00:00', '12:00:00'],
'end':['12:30:00', '17:00:00', '17:40:00'],
'seq':['0, 1, 2 ,3 ,4','0, 1, 2 ,3 ,4', '0, 1, 2 ,3 ,4'],
'store':['Z',"'AS', 'S'", 'Z']
}
df = pd.DataFrame(data)
我尝试使用以下代码将其转换为 JSON 格式
df_parsed = json.loads(df.to_json(orient="records"))
从上面生成的输出
[{'Product': 'A', 'Zone': 'E/A', 'start': '08:00:00', 'end': '17:40:00', 'seq': '0, 1, 2 ,3 ,4', 'store': 'Z'}, {'Product': 'B', 'Zone': 'A/N', 'start': '09:00:00', 'end': '17:00:00', 'seq': '0, 1, 2 ,3 ,4', 'store': 'AS'}, {'Product': 'A', 'Zone': 'E/A', 'start': '08:00:00', 'end': '17:40:00', 'seq': '0, 1, 2 ,3 ,4', 'store': 'Z'}]
期望的结果:
{
'A': {'Zone': 'E/A',
'tp': [{'start': [8, 0], 'end': [12, 0], 'seq': [0, 1, 2 ,3 ,4]},
{'start': [12, 30], 'end': [17, 40], 'seq': [0, 1, 2 ,3 ,4]}],
'store': ['Z']
},
'B': {'Zone': 'A/N',
'tp': [{'start': [9, 0], 'end': [17, 0], 'seq': [0, 1, 2 ,3 ,4]}],
'store': ['AS', 'S']
}
}
如果产品属于同一商店,则应将列 start、end 和 seq 的结果合并,如所需输出所示。如果时间的值为"09:00:00",则开始时间和结束时间也应表示为[9,0],只需要表示小时和分钟,因此我们可以从time 列中丢弃秒值。
【问题讨论】:
-
在转换为 JSON 格式之前,您需要先转换 DataFrame。例如,您可以尝试使用
df.groupby('Product')或其他 pandas 方法聚合数据。 -
@Sura-da 如果答案对数据框进行了一些操作,那么它就可以了。和
groupby应该用于俱乐部数据 -
如果我的回答有帮助,请点击勾选将其标记为已接受的答案。
标签: python json pandas dataframe to-json