Заполнение пропущенных значений даты минимально возможной датой в кадре данных Pandas - PullRequest
1 голос
/ 03 июня 2019

У меня есть фрейм данных со столбцом даты как,

df = pd.DataFrame({'date':['2014-10-01', np.nan, '2015-09-30', np.nan, np.nan, '2019-06-03']})

Теперь я хочу вменять отсутствующие значения даты в наименьшее возможное значение даты в пандах. Вменение текущей даты легко datetime.now(), но для одного конкретного случая я хочу, чтобы значения NaN были вменены с наименьшим возможным значением в датах.

Теперь datetime позволяет минимальной дате быть равной '0001-01-01', но это не приемлемо для панд. Вменяя это значение, я получаю ошибку

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 00:00:00

Я попытался посмотреть на stackoverflow, но не смог найти возможный ответ на минимально приемлемую дату в пандах.

Кто-нибудь знает об этом?

РЕДАКТИРОВАТЬ: Меня не особо интересует «OutOfBondsDatetime», мне интересно знать как можно меньшую дату, которую могут принять панды.

1 Ответ

2 голосов
/ 03 июня 2019

Если вы хотите, чтобы дата хорошо сочеталась с пандами, вам нужно учитывать pd.Timestamp, поскольку это тип datetime, с которым работает панда.

Если вы не противдаты, имеющие компонент времени, используйте pd.Timestamp.min:

pd.Timestamp.min
# Timestamp('1677-09-21 00:12:43.145225')

pd.to_datetime(df['date'].fillna(pd.Timestamp.min))

0   2014-10-01 00:00:00.000000
1   1677-09-21 00:12:43.145225
2   2015-09-30 00:00:00.000000
3   1677-09-21 00:12:43.145225
4   1677-09-21 00:12:43.145225
5   2019-06-03 00:00:00.000000
Name: date, dtype: datetime64[ns]

Если вам нужны только даты (без времени), то наименьший компонент даты без времени будет

pd.Timestamp.min.ceil('D')
# Timestamp('1677-09-22 00:00:00')

pd.to_datetime(df['date'].fillna(pd.Timestamp.min.ceil('D')))

0   2014-10-01
1   1677-09-22
2   2015-09-30
3   1677-09-22
4   1677-09-22
5   2019-06-03
Name: date, dtype: datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...