Фильтровать пользовательские даты и другой столбец все вместе - PullRequest
0 голосов
/ 05 ноября 2018

У меня ниже набора данных:

record_id   date      site  sick    funny   happy
ABCC2922-6  11/5/2018   1   1          1    1
CDEC2924-2  11/3/2018   4   1          1    1
ABCC2925-9  11/4/2018   4   1          1    1
CDEC2927-5  11/3/2018   1   1          1    1
FGHC2929-1  10/31/2018  4   1          1    1
FGHC1724-9  10/25/2018  2   3          1    1
IJKC1726-4  11/2/2018   1   3          1    1
IJKC1728-0  11/2/2018   2   3          1    1
ABCC1730-6  11/2/2018   2   3          1    1
ABCC1731-4  11/2/2018   2   3          1    1
CDEC1733-0  11/2/2018   1   3          1    1
CDEC1735-5  11/2/2018   2   3          1    1
CDEC1912-0  11/20/2018  1   1          1    1
IJKC1914-6  11/2/2018   2   6          1    1
ABCC1916-1  11/2/2018   2   6          1    1
IJKC1918-7  11/2/2018   2   1          1    1
CDEC1920-3  11/2/2018   1   6          1    1
IJKC1941-9  11/24/2018  2   4          1    1
IJKC1943-5  11/2/2018   2   4          1    1
ABCC1945-0  11/2/2018   1   4          1    1
CDEC1947-6  9/2/2018    2   1          1    1
ABCC1949-2  11/2/2018   2   4          1    1
CDEC1951-8  11/2/2018   2   5          1    1
IJKC1953-4  9/29/2018   2   1          1    1

И ниже приведен код, который частично дает желаемые результаты:

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

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

dates_ocurred = df.loc[m1 & m2 & m3, 'date'].value_counts()
dates_ocurred

2018-11-01    10
2018-11-02     6
2018-10-30     4
2018-10-31     3
Name: date, dtype: int64

places_ocurred = df.loc[m1 & m2 & m3, 'site'].value_counts()
places_ocurred

4       9
3       6
1       5
2       3
Name: site, dtype: int64

Итак, я хочу знать, где произошли эти подсчитанные даты? Как ниже: 4 9 случаев и из них 1 произошел в день X, 3 в день Y и так далее. Как узнать, когда эти случаи произошли, а также где они произошли на одном столе?

@ jpp, ваше решение в порядке, но как отфильтровать даты по сайту:

site=2   
date              
             count   sites

1 2018-11-02    14     [2]

Site=1
     date              
             count   sites

1 2018-11-02    14     [1]
2 2018-11-05     1     [1]
3 2018-11-20     1     [1]

Site=3
 date              
         count   sites
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...