Как удалить дубликаты строк на основе частичных строк в Python - PullRequest
0 голосов
/ 10 октября 2018

Если у меня есть следующий фрейм данных, в котором 01 и 02, 03 и 04, 05 и 06 являются одинаковыми ссылками:

id    city
01    New York City
02    New York
03    Tokyo City
04    Tokyo
05    Shanghai City
06    Shanghai
07    Beijing City
08    Paris
09    Berlin

Как я могу отбросить дубликаты ссылок и получить следующий фрейм данных?Благодарю.

id    city
01    New York 
02    Tokyo 
03    Shanghai
04    Beijing City
05    Paris
06    Berlin

Ответы [ 2 ]

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

Замените часть города пустой строкой и примените группу, сохранив первую строку

df=pd.DataFrame({'id':[1,2,3,4],'city':['New York City','New York','Tokyo City','Tokyo']})

df выглядит следующим образом

    city            id
0   New York City   1
1   New York        2
2   Tokyo City      3
3   Tokyo           4

Применить заменить и сгруппировать, чтобы получить первую строку в каждомgroup

df.city=df.city.str.replace('City','').str.strip()
df.groupby('city').first().sort_values('id')

Вывод:

city       id
New York    1
Tokyo       3

Или использовать drop_duplicates для подмножества столбцов.Спасибо @JR ibkr

df.drop_duplicates(subset='city')
0 голосов
/ 10 октября 2018

Теперь в пандах это намного проще с drop_duplicates и параметром keep.

# dataset
df = pd.DataFrame({'id':[1,2,3,4],'city':['New York City','New York','Tokyo City','Tokyo']})
# replace values
df.city = df.city.str.replace('City','').str.strip()
# drop duplicate (answer of original question)
df.drop_duplicates(subset=['city'])

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...