Python 在pandas中具有两个json索引的数据帧

Python 在pandas中具有两个json索引的数据帧,python,json,pandas,to-json,Python,Json,Pandas,To Json,我正在尝试将pandas的数据帧转换为json y=pd.read_csv('testx.csv',encoding='utf-8') y.columns = ['i','city','language','words'] del y['i'] y = y.set_index(['city','language']) z=y.to_json(orient='index') 我的json不正确,引号中有[和{。我做错了什么 {"["Moscow","Russian"]":{"words":330

我正在尝试将pandas的数据帧转换为json

y=pd.read_csv('testx.csv',encoding='utf-8')
y.columns = ['i','city','language','words']
del y['i']
y = y.set_index(['city','language'])
z=y.to_json(orient='index')
我的json不正确,引号中有
[
{
。我做错了什么

{"["Moscow","Russian"]":{"words":3300000},"["Moscow","English"]":{"words":550000},"["Moscow","French"]":{"words":100000},"
["London","English"]":{"words":9100000},"["London","Russian"]":{"words":150000},"["London","Spanish"]":{"words":90000},...
理想情况下,数据帧:

city           language           words       
Moscow         Russian            3300000
Moscow         English            550000
Moscow         French             100000
London         English            9100000
London         Russian            150000
London         Spanish            90000
...
必须转换为以下格式:

[
  {
    "city": "Moscow",
    "language": {
      "Russian": 3300000,
      "English": 550000,
      "French": 100000
    }
  },
  {
    "city": "London",
    "language": {
      "English": 9100000,
      "Russian": 150000,
      "Spanish": 90000
    }
  }
]

您是否愿意使用dict理解来明确地设计输出?然后您可以使用
json.dumps
将python dict转换为json。遗憾的是,您所需的格式超出了to_json支持的标准输出

[{"city":i, 
  "language":{l:n 
      for l,n in zip(g['language'], g['words'])}} 
   for i,g in df.groupby('city')] 
[{'city': 'London',
  'language': {'English': 9100000, 'Russian': 150000, 'Spanish': 90000}},
 {'city': 'Moscow',
  'language': {'English': 550000, 'French': 100000, 'Russian': 3300000}}]

谢谢。不幸的是,我在尝试执行json.dumps时出错了
导入json.dumps(dict_to_json_文件)
错误:
raise TypeError(repr(o)+“is not json serializable”)TypeError:3208不可json serializable
hmm奇怪,可能检查您的数据类型,确保整数列实际上是
int