在pandas中使用to_json时,如何保留DataFrame索引名?

时间:2014-06-07 08:29:19

标签: python json pandas

现在我有一个DataFrame 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 个答案:

答案 0 :(得分:2)

不幸的是,我们传递给orient的{​​{1}}参数都不会保留索引名称。解决方案是:

  1. 重新索引DataFrame,以便您要保留的索引成为普通列:

    df2.to_json()

    DataFrame df2.reset_index(inplace=True) 现在是:

    df2
  2. 将其另存为JSON(理想情况下使用 Age Kuwaiti Non-Kuwaiti Total 0 0-4 164483 156459 320942 1 5-9 158377 136935 295312 不保留索引以节省空间,orient是最节省空间的。)

    'split'
  3. 加载并重新索引。

    df2.to_json('file.json', orient='split')
    

    df3 = pd.read_json('file.json', orient='split').set_index('Age') 将符合预期:

    df3.index.name