В моем коде есть 2D-массив numpy.ndarray, заполненный значениями numpy.str_. Я пытаюсь изменить значения «null» на «nan» с помощью метода выбора. Проблема в том, что этот метод вызывает FutureWarning.
Я прочитал это. По предложению там я попытался не сравнивать строки Python с строками Numpy, а преобразовать строку Python в строку Numpy в начале. Очевидно, это не помогает, и я ищу совета.
Я бы не хотел отключать предупреждение (как в ссылке). Мне это кажется очень грязным подходом.
Мой фрагмент кода:
import pandas_datareader as pd
import numpy as np
import datetime as dt
start_date = dt.datetime(year=2013, month=1, day=1)
end_date = dt.datetime(year=2013, month=2, day=1)
df = pd.DataReader("AAA", "yahoo", start_date, end_date + dt.timedelta(days=1))
array = df.to_numpy()
null = np.str_("null")
nan = np.str_("nan")
array = np.select([array == null, not array == null], [nan, array])
print(array[0][0].__class__)
print(null.__class__)
C\Python\Project.py:13: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
array = np.select([array == null, not array == null], [nan, array])
<class 'numpy.str_'>
<class 'numpy.str_'>
Я новичок в Python, поэтому я буду благодарен за любую помощь. А также - если у вас есть лучший способ добиться этого, пожалуйста, дайте мне знать.
Спасибо!
Изменить: извините за это. Теперь должно работать как есть.
array
, которое вызывает эту проблему? (Желательно очень короткий, в соответствии с минимальной частью определения минимального воспроизводимого примера). Как бы то ни было, код нельзя использовать для тестирования предлагаемых исправлений, потому что его нельзя запустить без изменений (или, скорее, при запуске без изменений возникает совершенно другая проблема). - person Charles Duffy   schedule 19.07.2019'array' is not defined
, поскольку вы что-то сравниваете сarray
до того, как определилиarray
. - person Dodge   schedule 19.07.2019