python - 从 pandas 数据框创建的分组和缩进 json
问题描述
我目前有一个如下数据框:
ln 7,26 7,27 7,28 name
26443 G G G Product 1
27953 G G G Product 2
这是来自每天生成的 csv,数字 (7,26; 7,27...) 是日期,这意味着它们每天都不同。我想创建一个如下所示的 json:
[{
"index": 0,
"ln": "26443",
"availability": {
"7,26": "G",
"7,27": "G",
"7,28": "G",
},
"name": "Product 1"
}, {
"index": 1,
"ln": "27953",
"availability": {
"7,26": "G",
"7,27": "G",
"7,28": "G",
},
"name": "Product 2"
}]
我用来创建 json 的当前代码如下所示,但它只是按原样转储它:
with open('output.json', 'w', encoding='utf-8') as file:
df2.reset_index().to_json(file, orient='records', force_ascii=False)
有可能做到这一点吗?如果是这样,怎么做?
提前感谢您的任何建议!
解决方案
您可以使用
In [672]: cols = ['7,26', '7,27', '7,28']
In [673]: dff = df.assign(availability=df[cols].apply(dict, 1)).reset_index()
In [674]: dff[dff.columns.difference(cols)].to_dict('r')
Out[674]:
[{'availability': {'7,26': 'G', '7,27': 'G', '7,28': 'G'},
'index': 0,
'ln': 26443,
'name': 'Product 1'},
{'availability': {'7,26': 'G', '7,27': 'G', '7,28': 'G'},
'index': 1,
'ln': 27953,
'name': 'Product 2'}]
推荐阅读
- java - 输入一个数字,从Java中的给定样本中输出固定数字
- ruby-on-rails - Rails:NoMethodError at /projects/2/model/new undefined method `name' for []:Array
- mysql - 如何在 MySQL Workbench 中导出视图?
- sql-server - 如果 XML 数据中出现特定文本,如何添加新行?
- reactjs - 在数据网格编辑弹出表单时根据在另一个字段上选择的值显示/隐藏字段
- rust - 为什么带有保护子句的匹配模式并不详尽?
- android - React Native:按下后完成当前屏幕(组件)
- php - 使用 Jquery 和 Ajax 创建自动完成/自动建议列表,其中包含使用 PHP 从 API 检索的 JSON 数据
- javascript - 我希望使用 tablesorter 在加载时按特定顺序对表进行排序
- php - Woocommerce 单个产品页面上的自定义加减数量按钮