Pandas read_json Будущее предупреждение: поведение to_datetime с unit при синтаксическом анализе строк устарело

Я обновляю версию панд с 1.3.5 до 2.2.2 в старом проекте. Я не очень хорошо знаком с пандами, и у меня осталось предупреждение о будущем:

БудущееПредупреждение:

Поведение to_datetime с unit при синтаксическом анализе строк устарело. В будущей версии строки будут анализироваться как строки даты и времени, что соответствует поведению без «единицы». Чтобы сохранить старое поведение, перед вызовом to_datetime явно приведите целые числа или числа с плавающей запятой к числовому типу.

Вот причины ошибки:

>>> from io import StringIO
>>> import json
>>> import pandas
>>> 
>>> str = '{"Keyword":{"0":"TELECOM","1":"OPERATOR","Total":"Total"},"Type":{"0":"job_field","1":"title_class","Total":null},"Seniority Score":{"0":0.0,"1":-1.0,"Total":-1.0}}'
>>> df = pandas.read_json(StringIO(str), typ='frame', orient='records')

Насколько я понимаю, он должен что-то делать с целыми числами и числами с плавающей запятой, вероятно, представленными в виде строк в json, но я пробовал различные комбинации и не смог обойти предупреждение. Я в замешательстве, потому что вообще не вызываю функцию to_datetime.

Вероятно, это ошибка панд!

PaulS 09.05.2024 14:47

Это может быть такая ошибка панд: github.com/pandas-dev/pandas/issues/47576

topsail 09.05.2024 14:48

Предупреждение указывает, что в будущих версиях to_datetime в качестве входных данных будут приниматься только строки, в отличие от текущей версии, где вы можете указать единицу измерения (строка или целое число). Но странно, что вы получаете это предупреждение, поскольку я не вижу ни четкой ссылки на вызов to_datetime в предоставленном вами фрагменте, ни каких-либо данных о временных метках в вашем json.

Parman M. Alizadeh 09.05.2024 14:50

Парсер json может вызывать datetime как часть своей внутренней логики для идентификации типов данных - можно себе представить, что разделение "2001-01-01" как даты и строки может происходить таким образом... но я только предполагаю.

topsail 09.05.2024 14:52
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
299
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта ошибка связана с наличием в индексе сочетания числовых и строковых значений.

Минимальный воспроизводимый пример, вызывающий ошибку:

s = '{"A":{"0":"X","Y":"Y"}}'
pandas.read_json(StringIO(s), typ='frame', orient='records')

Pandas использует to_datetime, чтобы определить dtype индекса, что вызывает предупреждение.

Скорее всего, это следует рассматривать как незначительную ошибку, поскольку она вызывает только предупреждение. Возможно, все же стоит сообщить, но, возможно, никаких действий предпринято не будет.

Спасибо, за информацию я пока откатился на ветку 1.5.x

Martin Taleski 09.05.2024 18:29

Другие вопросы по теме