Python中使用to_json(orient="records")转JSON仅得值无键的问题
解决Pandas多级索引Series转JSON缺失键的问题
我来帮你搞定这个JSON转换的问题!你的核心问题在于:quarterly_churn_count["Churn"]是一个带多级索引(year和quarter)的Series,直接把它塞进字典再转DataFrame的话,Pandas会把整个Series当成单一列的值,转JSON时自然只输出数值,丢失了索引里的year和quarter信息。
解决方案步骤:
- 先把多级索引的Series转换成普通DataFrame,同时将索引(year和quarter)转为独立列
- 再用
to_json(orient="records")生成包含完整键值对的JSON数组
具体代码实现:
# 第一步:将带多级索引的Series转为DataFrame,重置索引让year和quarter成为列 churn_df = quarterly_churn_count["Churn"].reset_index() # 第二步:转成目标格式的JSON final = churn_df.to_json(orient='records') print(final)
转换后的JSON示例:
[ {"year":2008,"quarter":1,"Churn":1070}, {"year":2013,"quarter":1,"Churn":31}, {"year":2013,"quarter":2,"Churn":47}, {"year":2013,"quarter":3,"Churn":57}, ... ]
原代码失效的原因:
你之前的代码把整个Series作为字典的单个值,生成的DataFrame只有一列,列名是quarterly_churn_count["Churn"],值是整个Series的数值数组,所以转JSON时只会输出这个数组,自然丢失了year和quarter的键。而通过reset_index(),我们把原来的索引层级拆成了单独的列,这样每个行对象就会包含year、quarter和Churn三个完整的键值对,完美解决你的问题。
内容的提问来源于stack exchange,提问作者sangeetha sivakumar
相关产品推荐
相关产品推荐

