如何在Python中基于部分字符串删除重复行

时间:2018-10-10 13:04:36

标签: python pandas

如果我具有如下数据帧,其中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 :(得分:2)

用空字符串替换City部分,并通过保留第一行来应用组

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

应用替换和分组依据以获取每个分组中的第一行

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')

答案 1 :(得分:1)

现在使用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