найти количество столбцов в зависимости от количества вхождений - PullRequest
1 голос
/ 21 сентября 2019

У меня есть датафрейм, как показано ниже:

Я хочу, чтобы количество вхождений столбца ежедневно

new_df.head(5)
Out[165]: 
   grid_id    date_str
0   173159  2019-07-19
1   173861  2019-07-19
2   173159  2019-07-19
3   173860  2019-07-19
4   172460  2019-07-19
0   173159  2019-07-20

Expected output is:

grid_id    date_str grid_id_count
0   173159  2019-07-19 2
0   173159  2019-07-20 1
1   173861  2019-07-19 1
3   173860  2019-07-19 1
4   172460  2019-07-19 1

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Вы можете использовать df.drop_duplicates, чтобы отбрасывать дубликаты на основе обоих столбцов, затем groupby на grid_id и делать cumcount с ascending=False и assign это в новый столбец:

m=df.drop_duplicates(['grid_id','date_str']) 
final=(m.assign(grid_id_count=m.groupby('grid_id')
          .cumcount(ascending=False).add(1)).sort_index())

   grid_id    date_str  grid_id_count
0   173159  2019-07-19              2
0   173159  2019-07-20              1
1   173861  2019-07-19              1
3   173860  2019-07-19              1
4   172460  2019-07-19              1
0 голосов
/ 21 сентября 2019

Сгруппируйте все столбцы, создав уникальные строки, затем определите размер каждой группы, а затем сбросьте индекс, чтобы получить фрейм данных.

>>> df.groupby(['grid_id', 'date_str']).size().reset_index(name='count')
   grid_id    date_str  count
0   172460  2019-07-19  1
1   173159  2019-07-19  2
2   173159  2019-07-20  1
3   173860  2019-07-19  1
4   173861  2019-07-19  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...