#python #pandas #dataframe #pandas-groupby
#python #pandas #фрейм данных #pandas-groupby
Вопрос:
внутри моего приложения у меня есть фрейм данных, который выглядит похожим на это:
Пример:
id | address | code_a | code_b | code_c | more columns
1 | parkdrive 1 | 012ah8 | 012ah8a | 1345wqdwqe | ....
2 | parkdrive 1 | 012ah8 | 012ah8a | dwqd4646 | ....
3 | parkdrive 2 | 852fhz | 852fhza | fewf6465 | ....
4 | parkdrive 3 | 456se1 | 456se1a | 856fewf13 | ....
5 | parkdrive 3 | 456se1 | 456se1a | gth8596s | ....
6 | parkdrive 3 | 456se1 | 456se1a | a48qsgg | ....
7 | parkdrive 4 | tg8596 | tg8596a | 134568a | ....
Как вы можете видеть, каждый адрес может содержать несколько записей внутри моего фрейма данных, code_a и code_b следуют определенному шаблону, и только code_c не соответствует.
То, что я пытаюсь получить, — это фрейм данных, в котором столбец code_c игнорируется, отбрасывается или что-то еще, и весь фрейм данных сводится только к одной записи для каждого адреса … что-то вроде этого:
id | address | code_a | code_b | more columns
1 | parkdrive 1 | 012ah8 | 012ah8a | ...
3 | parkdrive 2 | 852fhz | 852fhza | ...
4 | parkdrive 3 | 456se1 | 456se1a | ...
7 | parkdrive 4 | tg8596 | tg8596a | ...
Я попробовал groupby-функцию, но, похоже, это не сработало — или это вообще правильная функция?
Спасибо за вашу помощь и хорошего дня всем вам!
Комментарии:
1. Я не уверен, что вы пытаетесь сделать? Удалить столбец C?
2.
df.drop_duplicates('address').drop(columns=['code_c'])
?3.Попробуйте
drop_duplicates
pandas.pydata.org/pandas-docs/stable/reference/api /… затем отбросьте столбецcode_c
4. Таким образом, вы потеряете информацию. Например, для первых 2 строк, какой из двух элементов в code_c сохранить? Вы в порядке, если потеряете эту информацию?
Ответ №1:
Вы можете drop_duplicates
сделать это
df.drop_duplicates(subset=[‘address’], inplace=True)
Это сохранит только одну запись на адрес
Ответ №2:
Я думаю, что вы ищете
# in this way you are looking for all the duplicates rows in all columns except for 'code_c'
df.drop_duplicates(subset=df.columns.difference(['code_c']))
# in this way you are looking for all the duplicates rows ONLY based on column 'address'
df.drop_duplicates(subset='address')
Ответ №3:
Я заметил, что в вашем примере данных, если вы удалите ColumnC, все записи с адресом, например, «parkdrive 1», будут просто дубликатами.
вы должны удалить столбец c:
df.drop('code_c',axis=1,inplace=True)
Затем вы можете удалить дубликаты:
df_clean = df.drop_duplicates()