#python #pandas
#python #pandas
Вопрос:
Некоторое время назад я запустил следующий код, и он сработал, но теперь появляется следующая ошибка. Как это решить?
Ошибка значения: протокол неизвестен.
import json
temp = json.dumps([status._json for status in tweet]) # create JSON
newdf = pd.read_json(temp, orient='records')
Комментарии:
1. Можете ли вы поделиться своим json
temp
?2. @Psidom: это просто json твитов, созданных tweepy. Ошибка была только тогда, когда я запускал коды в среде. Если я запускал его в base, ошибки не было. В любом случае, это полное уведомление об ошибке:
ValueError: Protocol not known: [{"created_at": "Mon Aug 24 03:00:06 0000 2020", "id": 1297730373137453056, "id_str": "1297730373137453056", "full_text": "Dietary and Physical Activity Behaviors Among High School Students u2014 Youth Risk Behavior Survey, United State... https
3. Если я запускал его в base, ошибки не было. Тогда это, вероятно, не проблема pandas.
4. @psidom: спасибо. Я очень новичок. Не могли бы вы, пожалуйста, подсказать, какие пакеты установить в среду в этом случае?
5. Я не думаю, что могу вносить предложения, не зная подробностей о вашей среде. Вам нужно сначала выяснить, какая строка вызывает проблему.
Ответ №1:
Решение в моем случае состояло в использовании StringIO
, как показано ниже:
from io import StringIO
newdf = pd.read_json(StringIO(temp))
Похоже, pd.read_json
в Pandas 1.1 больше не принимается простая строка.
Комментарии:
1. только что протестировал здесь, и это сработало как шарм, спасибо!
2. что StringIO делает с json, что заставляет его работать?
3. Похоже, что read_json теперь ищет объект, подобный файлу, а не похожий на строку. StringIO предоставляет файлоподобный интерфейс для строк. Из документации pandas: Под файлоподобным объектом мы подразумеваем объекты с помощью метода read(), такие как обработчик файла (например, через встроенную функцию open) или StringIO.
4. Проблема может заключаться в том, что данные включают путь или URL-адрес некоторой формы. В моем случае мне не нужно было использовать StringIO (), пока данные не начали включать URL. Хотелось бы, чтобы было проще найти документацию по этому поводу.
Ответ №2:
Насколько я мог отладить, эта проблема вызвана обновлением pandas. Обновление 1.1.0 немного изменило функцию read_json.
Я мог бы заставить свой код работать, установив версию pandas на 1.0.5
Комментарии:
1. Установка версии 1.0.5 сработала для меня. Я также пробовал более новую версию 1.1.1, но эта не сработала.