Подсчет значений в pandas кадре данных, отличных от нан, с условием сравнения даты - PullRequest
1 голос
/ 20 февраля 2020

У меня есть следующий фрейм данных:

Date_1                  Date_2                  Date_3
2019-12-18 13:43:47                             2019-12-18 13:43:47
2019-12-18 13:43:48     2019-12-18 13:43:47     
2020-12-18 17:51:17
2020-12-18 17:51:17     2020-12-18 17:51:17     2020-12-18 17:51:17

Я пытаюсь подсчитать количество значений в каждом столбце, если они удовлетворяют условию, что дата больше today.

Мой код:

today=pd.Timestamp.today() - pd.Timedelta(days=1)

total_date_1_events = len([df['Date_1']>today])+1
total_date_2_events = len([df['Date_2']>today])+1
total_date_3_events = len([df['Date_3']>today])+1

Если я печатаю каждую из 3 моих переменных, все они выдают одинаковый результат, равный 4, я понимаю, что это потому, что подсчитываются и пустые строки.

Я бы хотел получить следующие результаты:

total_date_1_events = 2 # because there are only 2 dates that are bigger than today
total_date_2_events = 1 # because there are only 1 date that is bigger than today
total_date_3_events = 1 # because there are only 1 date that is bigger than today

Спасибо за ваши предложения.

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Pandas way Series.sum и Series.gt:

df['Date_1'].gt(today).sum()

, если вам нужно больше столбцов, вы можете сделать:

s = df[['Date_1','Date_2','Date_3']].gt(today).sum()

это создает серию. Вы можете получить доступ к значениям, используя:

s['Date_1']
s['Date_2'] 
1 голос
/ 20 февраля 2020

Просто сделайте:

sum(df.Date_1>pd.Timestamp.today())
sum(df.Date_1>pd.Timestamp.today())
sum(df.Date_1>pd.Timestamp.today())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...