【发布时间】:2021-03-31 15:46:16
【问题描述】:
我有几个带有嵌套数据的 JSON 文件。利用 Python,我可以使用 pandas 来帮助解决这个问题:
import pandas as pd
df = pd.read_json (r'data.json')
export_csv = df.to_csv (r'data.csv', index = None, header=True)
但是,这只适用于简单的 JSON 文件。我拥有的那些嵌套数组很复杂,并且一些 JSON 数据合并在列下。例如,如果我们要使用这个示例数据:
data.json
[
{
"id": 1,
"name": {
"english": "Bulbasaur",
"french": "Bulbizarre"
},
"type": [
"Grass",
"Poison"
],
"base": {
"HP": 45,
"Attack": 49,
"Defense": 49
}
},
{
"id": 2,
"name": {
"english": "Ivysaur",
"french": "Herbizarre"
},
"type": [
"Grass",
"Poison"
],
"base": {
"HP": 60,
"Attack": 62,
"Defense": 63
}
}
]
结果如下:
您可以看到超过第一级的任何数组都以 JSON 格式显示(例如{'english': 'Bulbasaur', 'french': 'Bulbizarre'})。理想情况下,它应该将这些子数组分解为具有元素名称的列:
最重要的是,其他 JSON 文件具有不同的元素名称和顺序。因此,脚本应该捕获所有不同的元素名称,然后将它们转换为 CSV 列。
我怎样才能做到这一点?
【问题讨论】:
-
这些列的标准如何?您是否知道它总是,例如“name.french”和“name.engilsh”,或者随着时间的推移可能会出现任何形式的名称类型?这意味着动态添加列并让预先存在的行将 NONE 放入这些单元格中。
-
@tdelaney:不幸的是,并非所有的元素名称或顺序都相同。因此,这将检查 JSON 中的所有元素名称并将它们转换为列。
标签: python json pandas csv export-to-csv