【发布时间】:2021-06-13 00:24:16
【问题描述】:
感谢您提前提供的所有帮助。 我只是在 Python 编程方面取得进步,需要您帮助将数据帧转换为 json。
我有以下数据框列和行如下。
BinLogFilename, Type, Database, Data.col1, Data.col2, OldData.col1, OldData,col2, timestamp, offset.
mysql-bin.006423, INSERT, hybris, Sparta1, null, Greece1, null, 1615546843000, mysql-bin.006423:295851133
mysql-bin.006424, UPDATE, hybris, Sparta2, null, Greece2, null, 1615546843111, mysql-bin.006423:295851144
我试图按如下方式创建 json,
[
{
"BinLogFilename": "mysql-bin.006423",
"Type": "INSERT",
"Database": "hybris",
"Data": {
"col1": "Sparta1",
"col2": null,
},
"OldData": {
"col1": "Greece1",
"col2": null,
},
"Timestamp": 1615546843000,
"Offset": "mysql-bin.006423:295851133"
},
{
"BinLogFilename": "mysql-bin.006423",
"Type": "UPDATE",
"Database": "hybris",
"Data": {
"col1": "Sparta2",
"col2": null,
},
"OldData": {
"col1": "Greece2",
"col2": null,
},
"Timestamp": 1615546843111,
"Offset": "mysql-bin.006423:295851144"
}
]
这是尝试生成 json 的代码,
import json, pandas as pd
def my_func1(x, substring="Data."):
d = dict()
for key, value in x.items():
if key.startswith(substring):
d[key.replace(substring, "")] = value.to_list()[0]
return d
j = (df.groupby(['BinLogFilename','Type','Table','ServerId','BinLogPosition','Database'], as_index=True).apply(my_func1).reset_index().rename(columns={0:'Data'}).to_json(orient='records'))
不幸的是,我无法弄清楚以下内容,
- 如何将
timestamp和offset附加到每个json 对象? - 我只能附加嵌套的 json 对象
Data.块,而我找不到附加OldData.json 对象的解决方案。
我提到了很多例子,但无法弄清楚。请告诉我您宝贵的解决方案。
【问题讨论】:
标签: python-3.x pandas dataframe pandas-groupby series