Не удается правильно прочитать словарь, сохраненный как файл json

1

Я не могу правильно прочитать в dataframe словарь, который я сохраняю как json файл. Кажется, что ключ поврежден. Не уверен, что проблема json.dump() с использованием json.dump() или pd.read_json(). Я хочу, чтобы ключ был самым левым столбцом, но он, кажется, смешивается с типом данных времени. У меня есть следующий словарь:

t1 = {
    "666020888022790149": {
        "contributors": None,
        "coordinates":  None,
        "created_at": "Sun Nov 15 22:32:08 +0000 2015"},
    "666029285002620928": {
        "contributors": None,
        "coordinates": None,
        "created_at": "Sun Nov 15 23:05:30 +0000 2015"},
    "666033412701032449": {
        "contributors": None,
        "coordinates": None,
        "created_at": "Sun Nov 15 23:21:54 +0000 2015",
            }
}

Код:

import json
import pandas as pd

with open('test1', 'w') as f:  
    json.dump(t1, f,
              sort_keys = True,
              indent=4)

df = pd.read_json('test1',orient='index')
df.head(3)

Выход:

Изображение 174551

Теги:
pandas

1 ответ

4
Лучший ответ

Просто скажите Пандам не конвертировать оси:

result = pd.read_json('test1', orient='index', convert_axes=False)
#                    contributors  coordinates          created_at
#666020888022790149           NaN          NaN 2015-11-15 22:32:08
#666029285002620928           NaN          NaN 2015-11-15 23:05:30
#666033412701032449           NaN          NaN 2015-11-15 23:21:54

Индекс имеет тип string:

result.index.dtype
#dtype('O')

В качестве побочного примечания "test1" является плохим именем для файла CSV. "test1.csv" намного лучше.

  • 0
    Да, это работает. Но когда я смотрю на сохраненный файл, ключ находится в двойных кавычках, подразумевая, что это строка. Я ожидал, что он будет прочитан также как строка, а не как тип данных datetime.
  • 1
    Это потому, что pandas json reader «слишком умен» и пытается угадать за вас, если вы не скажете этого.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню