Когда вы выполняете часть своей оскорбительной инструкции:
pd.to_datetime(min_date, format="%Y-%m-%d")
, вы получите:
Timestamp('2019-11-01 00:00:00+0000', tz='UTC')
Это означает, что format = "% Y-% m- % d " не препятствует синтаксическому анализу этой функцией входной строки целом , поэтому в результате получается с часовым поясом.
Для анализа только часть даты, запустите:
pd.to_datetime(min_date[:10])
(даже без формат ) и вы получите:
Timestamp('2019-11-01 00:00:00')
без часовой пояс.
Но вся ваша инструкция странная. Когда вы запускаете с левой стороны в одиночку:
df['days_in_Month'].loc[df['Month'] == min_date_Month]
вы получите:
0 29 days
Name: days_in_Month, dtype: timedelta64[ns]
Но при запуске с правой стороны Только:
df['Month_end'] - pd.to_datetime(min_date[:10])
Вы получите:
0 29 days
1 60 days
2 91 days
3 120 days
Name: Month_end, dtype: timedelta64[ns]
Таким образом, вы пытаетесь сохранить весь столбец в отдельной ячейке .
Может быть, эта инструкция должна быть:
df['days_in_Month'] = df['Month_end'] - pd.to_datetime(min_date[:10])
вместо?
И еще одно замечание: Ваш столбец days_in_Month на самом деле имеет значение timedelta64 введите, а не количество дней.
Чтобы указать количество дней в каждом месяце (как целое число ), необходимо выполнить:
df['days_in_Month'] = (df['Month_end'] - df['Month_begin']).dt.days + 1
Обратите внимание, что, например, разница между 2019-11-01 и 2019-11-30 составляет 29 дней, тогда как в ноябре 30 дней.