Подсчет уникальных значений приводит к ошибке измерения

#python #pandas #pandas-groupby #unique

#питон #панды #pandas-groupby #уникальный

Вопрос:

У меня есть входные данные в виде фрейма данных pandas new_res с > 6 миллионами строк. Моя цель — получить количество всех уникальных строк.

 start_hex_id_res8   start_hex_id_res9   end_hex_id_res9 end_hex_id_res9 date    is_weekday  is_holiday  starthour
0   882a100d23fffff 892a100d23bffff 892a100d237ffff 892a100d237ffff 2020-07-01  True    False   0
1   882a100d23fffff 892a100d23bffff 892a100d237ffff 892a100d237ffff 2020-07-01  True    False   0
2   882a1072c7fffff 892a1072c6bffff 892a1072187ffff 892a1072187ffff 2020-07-01  True    False   0
3   882a1072c7fffff 892a1072c6bffff 892a1072187ffff 892a1072187ffff 2020-07-01  True    False   0
4   882a100d09fffff 892a100d097ffff 892a100d09bffff 892a100d09bffff 2020-07-01  True    False   0

start_hex_id_res8    object
start_hex_id_res9    object
end_hex_id_res9      object
end_hex_id_res9      object
date                 object
is_weekday             bool
is_holiday             bool
starthour             int64
 

Я уже пробовал

 agg = new_res.groupby(['start_hex_id_res8', 'start_hex_id_res9', 'end_hex_id_res9', 'end_hex_id_res9', 'date','is_weekday', 'is_holiday', 'starthour']).size().groupby(level=0).size()
 

но это выдает ошибку:

 ValueError: Grouper for 'end_hex_id_res9' not 1-dimensional
 

Как я должен интерпретировать это и каким был бы правильный метод в pandas для создания нового фрейма данных, который является сокращенной версией new_res ? Результатом будет просто фрейм данных с теми же именами столбцов, но с подсчетом всех уникальных строк (добавление count столбца в конце).

Комментарии:

1. Почему у вас есть два столбца с одинаковым именем «end_hex_id_res9»?

Ответ №1:

Давайте попробуем;

 g=df.apply(lambda x:x.astype(str))#Make entire dataframe a str
g.groupby(list(g.columns)).ngroup().nunique()#Groupbycolumns, find special groups and see how many are unique
 

Комментарии:

1. Пожалуйста, дайте мне оценку. Я поддержал ваш вопрос. Спасибо