如何在Python中删除基于部分字符串的重复行
如果我有如下数据框,其中01和02、03和04、05和06是相同的:如何在Python中删除基于部分字符串的重复行,python,pandas,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 0
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
现在,使用drop_duplicates和keep参数,在pandas中,这要容易得多
# 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'])
将城市部分替换为空字符串,并保留第一行以应用组
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
应用replace和groupby以获取每个组中的第一行
df.city=df.city.str.replace('City','').str.strip()
df.groupby('city').first().sort_values('id')
输出:
city id
New York 1
Tokyo 3
或者在列的子集上使用drop_重复项。谢谢@JR ibkr
df.drop_duplicates(subset='city')
北京不能成为北京吗?对不起,在我的真实数据中,它不是规则的。可能重复@JRibkr我的朋友它不是完全重复的。在删除重复项之前,需要进行一些数据操作。谢谢你的努力,但你不觉得这太过分了吗。为什么不使用drop_副本?默认情况下,它将保留第一次出现。@JRibkr
drop_duplicates
的默认行为是检查所有列中是否存在重复值,但可以使用subset param检查特定字段中是否存在重复。编辑了答案。感谢您更新您的解决方案以反映简易方式?许多人查找stackoverflow以获得简单高效的解决方案。然后创建一个包含城市名称部分的数据框并应用drop\u duplicate这个问题是重复的问题。