如何在使用pandas的to_json时保留DataFrame索引名称?

4 投票
1 回答
2439 浏览
提问于 2025-04-18 08:57

现在我有一个数据表 df2,它看起来是这样的:

       Kuwaiti  Non-Kuwaiti   Total
Age                                
0-4     164483       156459  320942
5-9     158377       136935  295312

当我执行:

df2.to_json()

我得到的结果是:

'{"Kuwaiti":{"0-4":164483,"5-9":158377},"Non-Kuwaiti":{"0-4":156459,"5-9":136935},"Total":{"0-4":320942,"5-9":295312}}'

你可以看到,df2.index.name 这个名字没有被保留下来。

我该怎么做才能保留这个索引的名字呢?

1 个回答

7

很遗憾,我们传给 df2.to_json()orient 参数都无法保留索引名称。解决这个问题的方法是:

  1. 重新设置数据框的索引,让你想保留的索引变成普通的列:

    df2.reset_index(inplace=True)
    

    现在数据框 df2 是:

        Age    Kuwaiti  Non-Kuwaiti   Total
    0   0-4     164483       156459  320942
    1   5-9     158377       136935  295312
    
  2. 将其保存为 JSON 格式(最好使用一个不保留索引的 orient,这样可以节省空间,'split' 是最节省空间的方式)。

    df2.to_json('file.json', orient='split')
    
  3. 加载并重新设置索引。

    df3 = pd.read_json('file.json', orient='split').set_index('Age')
    

    这样 df3.index.name 就会如你所期待的那样:

           Kuwaiti  Non-Kuwaiti   Total
    Age
    0-4     164483       156459  320942
    5-9     158377       136935  295312
    

撰写回答