【问题标题】:How do I convert a pandas pivot table to a JSON [duplicate]如何将熊猫数据透视表转换为 JSON [重复]
【发布时间】:2018-03-09 20:31:12
【问题描述】:

我使用 pandas 数据透视表创建了如下表。

print(pd_pivot_table)

category_id  name
3            name3        0.329204
24           name24       0.323727
31           name31       0.319526
19           name19       0.008992
23           name23       0.005897

我想根据这个 pivot_table 创建 JSON,但我不知道如何。

[
  {
    "category_id": 3,
    "name": "name3",
    "score": 0.329204
  },
  {
    "category_id": 24,
    "name": "name24",
    "score": 0.323727
  },
  {
    "category_id": 31,
    "name": "name31",
    "score": 0.319526
  },
  {
    "category_id": 19,
    "name": "name19",
    "score": 0.008992
  },
  {
    "category_id": 23,
    "name": "name23",
    "score": 0.005897
  }
]

或者,我首先不知道如何获取 category_id 和 name 值。 即使你写下面的代码也不能得到你想要的结果。

for data in pd_pivot_table:
  print(data) # 0.329204
  print(data["category_id"]) # *** IndexError: invalid index to scalar variable.

【问题讨论】:

    标签: python pandas pivot-table


    【解决方案1】:

    您可以先将Series.reset_index 用于DataFrame,然后再使用DataFrame.to_json

    print (df)
    category_id  name  
    3            name3     0.329204
    24           name24    0.323727
    31           name31    0.319526
    19           name19    0.008992
    23           name23    0.005897
    Name: score, dtype: float64
    
    print (type(df))
    <class 'pandas.core.series.Series'>
    
    json = df.reset_index().to_json(orient='records')
    print (json)
    [{"category_id":3,"name":"name3","score":0.329204},
     {"category_id":24,"name":"name24","score":0.323727},
     {"category_id":31,"name":"name31","score":0.319526},
     {"category_id":19,"name":"name19","score":0.008992},
     {"category_id":23,"name":"name23","score":0.005897}]
    

    如果需要输出到文件:

    df.reset_index().to_json('file.json',orient='records')
    

    详情

    print (df.reset_index())
       category_id    name     score
    0            3   name3  0.329204
    1           24  name24  0.323727
    2           31  name31  0.319526
    3           19  name19  0.008992
    4           23  name23  0.005897
    
    print (type(df.reset_index()))
    <class 'pandas.core.frame.DataFrame'>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 2017-10-01
      • 1970-01-01
      • 2021-04-19
      • 2023-03-18
      • 2018-08-25
      • 2019-05-25
      • 2021-08-21
      相关资源
      最近更新 更多