Рассчитайте и удалите дубликаты каждой уникальной строки в панде. - PullRequest
0 голосов
/ 22 мая 2019

Кадр данных состоит из более чем 150 000 данных, включая дублированные данные.Ниже приведен пример данных с 25 столбцами (включая индекс).Я хотел бы:

1) рассчитать количество дубликатов для каждого уникального данных

2) удалить все дублированные данные на основе каждой строки

3) вставить новый столбецдля отображения количества дубликатов для каждого уникального данных

,Date,Time,Company,AV_ID,timestamp,Longitude,Latitude,Altitude,Roll,Pitch,Yaw,Roll Rate,Pitch Rate,Yaw Rate,Speed-x,Speed-y,Speed-z,Drive Mode,Throttle Actuator Value,Brake Light Condition,Brake Actuator Value,Steering Angle,Direction Indicator,Reverse Light Condition
0,29-Jan-2019,09:29:43.184,DEL,DEL0002,2019-01-29 09:33:33.425000,,,,,,,,0.0,,,2.22,,,9.25,,,,,
1,29-Jan-2019,09:29:43.184,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
2,29-Jan-2019,09:29:43.199,DEL,DEL0002,2019-01-29 09:33:33.425000,,,,,,,,0.0,,,2.22,,,9.25,,,,,
3,29-Jan-2019,09:29:43.199,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
4,29-Jan-2019,09:29:44.543,DEL,DEL0002,2019-01-29 09:33:35.425000,,,,,,,,0.0,,,2.5,,,7.63,,,,,
5,29-Jan-2019,09:29:44.543,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
6,29-Jan-2019,09:29:44.574,DEL,DEL0002,2019-01-29 09:33:35.425000,,,,,,,,0.0,,,2.5,,,7.63,,,,,
7,29-Jan-2019,09:29:44.574,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
8,29-Jan-2019,09:29:46.606,DEL,DEL0002,2019-01-29 09:33:37.425000,,,,,,,,0.0,,,2.22,,,5.48,,,,,
9,29-Jan-2019,09:29:46.606,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
10,29-Jan-2019,09:29:46.622,DEL,DEL0002,2019-01-29 09:33:37.425000,,,,,,,,0.0,,,2.22,,,5.48,,,,,
11,29-Jan-2019,09:29:46.622,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
12,29-Jan-2019,09:29:48.573,DEL,DEL0002,2019-01-29 09:33:39.422000,,,,,,,,0.0,,,1.94,,,6.02,,,,,
13,29-Jan-2019,09:29:48.573,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
14,29-Jan-2019,09:29:48.588,DEL,DEL0002,2019-01-29 09:33:39.422000,,,,,,,,0.0,,,1.94,,,6.02,,,,,

На сегодняшний день мне удалось удалить дубликаты следующим образом.Однако я не могу рассчитать количество дубликатов для каждой уникальной строки данных и вставить счетчики в новый столбец.

# To get some time conversion
s = pd.to_numeric(mydataset['timestamp'], errors = 'coerce') + local
mydataset['timestamp'] = pd.to_datetime(s, unit = 'ms')

# To remove the duplicates
duplicatedRows = mydataset[mydataset.duplicated()]

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Предполагая, что я прав в том, что вы хотите, глядя на следующее подмножество ваших данных:

4,29-Jan-2019,09:29:44.543,DEL,DEL0002,2019-01-29 09:33:35.425000,,,,,,,,0.0,,,2.5,,,7.63,,,,,
5,29-Jan-2019,09:29:44.543,in,msg:,should,be,20,or,18!,,,,,,,,,,,,,,,
6,29-Jan-2019,09:29:44.574,DEL,DEL0002,2019-01-29 09:33:35.425000,,,,,,,,0.0,,,2.5,,,7.63,,,,,

Если вы хотите считать первую и последнюю из этих строк дубликатами, то вам нужноукажите, какие столбцы равны groupby, так как время отличается во втором столбце (09: 29: 44.543 и 09: 29: 44.574), поэтому не будет группироваться вместе.

Использование числа столбцов в качествепример:

cols_to_groupby = ['Company', 'AV_ID', 'timestamp', 'Longitude', 'Latitude', 'Altitude']

# insert a new column with count of duplicates:
df['duplicate_count'] = df.groupby(cols_to_groupby).transform('count')

# get rid of duplicates:
df = df.drop_duplicates(subset=cols_to_groupby)
0 голосов
/ 22 мая 2019

Вы можете попробовать groupby все столбцы, а затем посчитать дубликаты на size:

df = df.groupby(df.columns.tolist()).size().reset_index(name='Size')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...