如何删除DataFrame中User与Location列重复的行?
解决Pandas中删除User和Location列同时重复行的问题
我完全懂你的困扰——处理用户评论数据时,确实需要清理掉那些同一个用户在同一地点留下的重复记录,只保留首次出现的那条对吧?这其实用Pandas的内置方法就能轻松搞定。
具体实现步骤
首先先还原你的原始数据,方便后续操作:
import pandas as pd # 构建原始DataFrame data = { 'Index': [1, 2, 3, 4, 5, 6], 'User': ['bob', 'bil', 'bob', 'juan', 'bil', 'bil'], 'Location': [62.354, 59.511, 63.884, 58.221, 59.511, 57.422], 'Rating': [4, 5, 3, 4, 5, 5], 'Language': ['eng', 'span', 'ger', 'jap', 'eng', 'fra'] } df = pd.DataFrame(data).set_index('Index')
接下来执行核心的去重操作,直接用drop_duplicates()方法就能精准解决你的需求:
# 基于User和Location的组合去重,仅保留第一次出现的行 df_cleaned = df.drop_duplicates(subset=['User', 'Location'], keep='first')
运行后得到的df_cleaned就是你想要的结果:
User Location Rating Language Index 1 bob 62.354 4 eng 2 bil 59.511 5 span 3 bob 63.884 3 ger 4 juan 58.221 4 jap 6 bil 57.422 5 fra
参数解释
subset=['User', 'Location']:明确指定只根据这两列的组合判断重复,其他列(比如Rating、Language)的差异不会影响重复判定,完全匹配你的场景。keep='first':保留每组重复行里的第一行,删除后续重复的记录。如果你的需求是保留最后一条重复行,可以改成keep='last';要是想删除所有重复行(不管首次还是末次),换成keep=False就行。
这样处理后,就能彻底清理掉那些冗余的重复评论啦!
内容的提问来源于stack exchange,提问作者Juan R.
相关产品推荐
相关产品推荐

