Панды: для всего набора повторяющихся записей в определенном столбце, взять некоторую информацию ЧАСТЬ 2 - PullRequest
0 голосов
/ 04 октября 2018

Итак, я недавно задал вопрос об этом наборе данных ( Панды: для всего набора повторяющихся записей в определенном столбце, получите некоторую информацию )

     ID_Code    Status1    Status2
0      A          Done       Not
1      A          Done       Done
2      B          Not        Not
3      B          Not        Done
4      C          Not        Not
5      C          Not        Not
6      C          Done       Done

Прямо сейчас яесть этот код:

df.groupby('ID_Code').apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100)

, который дает мне такой вывод:

 ID_Code
 A     0.000000
 B    50.000000
 C    66.666667
 dtype: float64

Что я хочу знать, это делать то же самое, но с учетом дополнительного столбца дат.Итак, еще раз, я хочу, чтобы процент Not-Not для каждого ID_Code в день.

     ID_Code    Status1    Status2    Date
0      A          Done       Not     01-23-18
1      A          Done       Done    01-23-18
2      B          Not        Not     01-24-18
3      B          Not        Done    01-24-18
4      C          Not        Not     01-24-18
5      C          Not        Not     01-25-18
6      C          Done       Done    01-25-18

1 Ответ

0 голосов
/ 04 октября 2018

Просто добавьте Date в вашу группу:

df.groupby(['ID_Code','Date']).apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100)

ID_Code  Date    
A        01-23-18      0.0
B        01-24-18     50.0
C        01-24-18    100.0
         01-25-18     50.0
dtype: float64

# To get as a standard dataframe, add in `.reset_index()`
# df.groupby(['ID_Code','Date']).apply(lambda x: (x[['Status1','Status2']] == 'Not').all(1).sum()/len(x)*100).reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...