Замените часть города пустой строкой и примените группу, сохранив первую строку
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')