Pandas датафрейм проверяет, является ли дата в столбце меньше пользовательских дней? - PullRequest
1 голос
/ 04 марта 2020

df имеет два столбца: имя и дата (дата в любом формате - строковый формат / формат даты и времени). В настоящее время он находится в строковом формате.

df

            name      date              

    0       john     2019-08-24 05:30:30

    1       jude     2020-03-03 21:15:03

, если date меньше 10 дней от текущего времени, добавьте новый столбец (выходные данные) false и true в противном случае.

Ожидаемый результат

          name      date                 output  

  0       john     2019-08-24 05:30:30    False

  1       jude     2020-03-03 21:15:03    True

1 Ответ

1 голос
/ 04 марта 2020

Использовать Series.between с вычитанным временем и временем в 10 дней и текущим временем:

#if necessary
df['date'] = pd.to_datetime(df['date'])

now = pd.to_datetime('now')
df['output'] = df['date'].between(now - pd.Timedelta(10, 'd'), now)

Работает так же, как прикованная маска по битам AND для greater or equal - Series.ge и less or equal - Series.le:

df['output'] = df['date'].ge(now - pd.Timedelta(10, 'd')) & df['date'].le(now)
#alternative
#df['output'] = (df['date'] >= now - pd.Timedelta(10, 'd')) & (df['date'] <= now)

print (df)
   name                date  output
0  john 2019-08-24 05:30:30   False
1  jude 2020-03-03 21:15:03    True

Если нужны другие комбинации, используйте Series.lt, Series.gt, Series.le, Series.ge.

Если хотите пропустить время и работать только с датами, добавьте Series.dt.date и Timestamp.date:

#if necessary
df['date'] = pd.to_datetime(df['date'])

now = pd.to_datetime('now').date()
df['output'] = df['date'].dt.date.between(now - pd.Timedelta(10, 'd'), now)
print (df)
   name                date  output
0  john 2019-08-24 05:30:30   False
1  jude 2020-03-03 21:15:03    True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...