Применить функцию к уже существующему столбцу даты - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть ниже вымышленный код (мой код чувствителен):

df
record_id     date    sick funny    happy
XK2C0001-3  7/10/2018   2   1       1
XK2C0002-1  7/10/2018   2   4       1
XK2C0003-9  7/11/2018   2   4       1
ZT2C0004-7  7/11/2018   2   4       1
XK2C0005-4  7/11/2018   1   1       1
XK2C0001-3  7/10/2018   2   4       1
XK2C0002-1  7/10/2018   2   4       1
XK2C0003-9  7/11/2018   1   4       1
XK2C0004-7  7/11/2018   2   4       1
ZT2C0005-4  7/11/2018   2   4       1


male_gender=df.loc[(df['sick'] == 1) | (df['funny'] == 1) | (df['happy'] == 1)]
male_gender['date'].value_counts().head()
2018-10-02    22
2018-10-03    14
2018-10-05    10
2018-11-01    10
2018-10-22    10
Name: date, dtype: int64

и у меня есть ниже рабочая функция для фильтрации последних 7 рабочих дней:

prev_days = [today - timedelta(days=i) for i in range(10)]  
prev_days = [d for d in prev_days if d.weekday() < 5]       
for d in prev_days[:7]:                                     
    print(d)

У меня вопрос: как применить вышеописанную функцию к столбцу данных «дата»? Я просто хочу идею, приведенные выше данные являются вымышленными, вы можете привести еще один пример.

Редактировать: Я хочу знать, сколько у меня мужской_гендер за последние 7 рабочих дней по сравнению только с сегодняшним днем.

1 Ответ

0 голосов
/ 05 ноября 2018

Преобразуйте ваш df['date'] в datetime серию, отфильтруйте ваш фрейм данных, и затем используйте pd.Series.value_counts:

df['date'] = pd.to_datetime(df['date'])

m1 = (df['sick'] == 1) | (df['funny'] == 1) | (df['happy'] == 1)  # custom conditions
m2 = df['date'] >= pd.Timestamp('today') - pd.DateOffset(days=7)  # last 7 days
m3 = ~df['date'].dt.weekday.isin([5, 6])                          # not Sat or Sun

res = df.loc[m1 & m2 & m3, 'date'].value_counts()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...