0

パンダのデータフレームを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
    }
  }
]
4

1 に答える 1

0

出力を明示的に作成するために辞書内包表記を使用してもよろしいですか? 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}}]
于 2016-03-21T05:26:37.527 に答える