У меня есть столбец datetime, и мне нужно изменить некоторые из этих значений на новые datetime.Когда я устанавливаю значения с помощью df.loc [indices, 'col'] = new_datetimes, незатронутые значения приводятся к int, в то время как новые установленные значения находятся в datetime.Если я устанавливаю значения по одному, приведения типа не происходит.
Для иллюстрации я создал образец df только с одним столбцом.
df = pd.DataFrame([dt.datetime(2019,1,1)]*5)
df.loc[[1,3,4]] = [dt.datetime(2019,1,2)]*3
df
Это приводит к следующему: вывод
Если я изменяю индексы 1,3,4 индивидуально:
df = pd.DataFrame([dt.datetime(2019,1,1)]*5)
df.loc[1] = dt.datetime(2019,1,2)
df.loc[3] = dt.datetime(2019,1,2)
df.loc[4] = dt.datetime(2019,1,2)
df
Я получаю правильный вывод: вывод
Aперед установкой было предложено превратить список в пустой массив, что решает проблему.Однако, если вы попытаетесь установить несколько столбцов (некоторые из которых не являются датами и временем) с использованием массива numpy, проблема снова возникнет.
В этом примере в фрейме данных есть два столбца, и я пытаюсь установить оба столбца.
df = pd.DataFrame({'dt':[dt.datetime(2019,1,1)]*5, 'value':[1,1,1,1,1]})
df.loc[[1,3,4]] = np.array([[dt.datetime(2019,1,2)]*3, [2,2,2]]).T
df
Это дает следующий вывод: вывод
Может кто-нибудь объяснить, что является причиной принуждения и как его предотвратить?Код, который я написал, который использует это, был написан более месяца назад и работал нормально, может ли это быть одним из тех предупреждений о том, что в будущих версиях панд не будут функционировать определенные функции?
Объяснение того, что происходит, будет с благодарностью, потому что я написал другой код, который, вероятно, использует аналогичную функциональность, хочет убедиться, что все работает как задумано.