python - 将 pandas 数据框转换为嵌套 json
问题描述
我有一个由 csv 文件制成的 Pandas 数据框,我想将其转换为自定义嵌套 JSON
df = pd.read_csv("/content/analog.csv", sep=",")
数据框是这样的:
datetime key1 key2 key3 col1 col2 col3 ... col100
2020-08-27T02:28:00Z WECP001 27001 con0000 1001 1002 1003 ... 1005
2020-08-27T02:28:01Z WECP001 27001 con0000 11 22 33 ... 99
我想将此df转换为嵌套的json,例如:
[
{
"datetime":"2020-08-27T02:28:00Z"
"key1:"WECP001"
"key2:"27001"
"key3":"con0000"
"DATA":{
"col1":1001,
"col2":1002,
"col3":1003,
...
"col100":1005
}
},
{
"datetime":"2020-08-27T02:28:01Z"
"key1:"WECP001"
"key2:"27001"
"key3":"con0000"
"DATA":{
"col1":11,
"col2":22,
"col3":33,
...
"col100":99
}
}
]
这是我已经厌倦的代码,但我得到了错误的结果
cols = df.columns.difference(['datetime','key1','key2','key3'])
j = (df.groupby(['datetime','key1','key2','key3'])[cols]
.apply(lambda x: x.to_dict('r'))
.reset_index(name='DATA')
.to_json(orient='records'))
print (j)
输出是这样的:
{
"datetime":"2020-08-27T02:28:00Z"
"key1:"WECP001"
"key2:"27001"
"key3":"con0000"
"DATA":[{
"col1":1001,
"col2":1002,
"col3":1003,
...
"col100
}]
我的代码的问题是“数据”部分变成了列表而不是字典,感谢您的帮助
解决方案
尝试这个
df2 = df.iloc[:, :4]
df2['Data'] = df[[f'col{i}' for i in range(1, 4)]].to_dict(orient='records')
print(df2.to_json(orient='records'))
输出:
[
{
"datetime": "2020-08-27T02:28:00Z",
"key1": "WECP001",
"key2": 27001,
"key3": "con0000",
"Data": {
"col1": 1001,
"col2": 1002,
"col3": 1003
}
},
{
"datetime": "2020-08-27T02:28:01Z",
"key1": "WECP001",
"key2": 27001,
"key3": "con0000",
"Data": {
"col1": 11,
"col2": 22,
"col3": 33
}
}
]
推荐阅读
- android - 如何检查协程是否使用相同的上下文?
- node.js - 如何解决 res.status 不是函数?
- jenkins - 向存在的 html 文件发送电子邮件通知
- branch.io - 与 Facebook 广告合作伙伴在 Branch.io 上连接订阅和开始试用
- mysql - 计算相对于特定值的 zscore
- tensorflow - 无法添加第四个卷积层
- javascript - Javascript Bookmarklet:如何在复制到剪贴板之前从 document.title 中删除某些文本?
- python - 限制 tkinter 中的输入,以便可以输入价格,按键将数字放在百分之一美元中,小数是固定的
- android - Room 数据库使用协程异步返回 Null
- javascript - 在 livewire 组件中自动打开模态它不起作用