【问题标题】:How to remove rows in Pandas DataFrame that are partial duplicates?如何删除 Pandas DataFrame 中部分重复的行?
【发布时间】:2020-08-05 01:44:19
【问题描述】:

我有一个抓取推文的 DataFrame,我正在尝试删除部分重复的推文行。

以下是具有相同问题的简化 DataFrame。注意第一条推文和最后一条推文除了附加的 url 之外的所有内容都是相同的;我需要一种方法来删除像这样的部分重复,只保留最新的实例。

data = {
    'Tweets':[' The Interstate is closed www.txdot.com/closed',\
                'The project is complete www.txdot.com/news',\
                'The Interstate is closed www.txdot.com/news'],
    'Date': ['Mon Aug 03 20:48:42', 'Mon Aug 03 20:15:42', 'Mon Aug 03 20:01:42' ]
}

df =pd.DataFrame(data)

我尝试使用下面的 drop_duplicates 方法删除重复项,但似乎没有一个论据来完成此操作。

 df.drop_duplicates(subset=['Tweets'])

任何想法如何做到这一点?

【问题讨论】:

  • 请不要因为第一次没有得到回复而连续两次发布相同的问题。
  • 将它们视为重复的确切标准是什么?一旦你知道你想做什么,我们就可以对其进行编程
  • @ansev Duplicates 是具有相同文本的推文,即使它们的 url 不同

标签: pandas duplicates


【解决方案1】:

您可以编写一个正则表达式来删除斜杠,通过主 url 部分标识每一列,并忽略正斜杠。

df['Tweets'].replace('(www\.\w+\.com)/(\w+)',r'\1',regex=True).drop_duplicates()

产量

0    The Interstate is closed www.txdot.com
1     The project is complete www.txdot.com
Name: Tweets, dtype: object

我们可以传递索引并创建一个布尔过滤器。

df.loc[df['Tweets'].replace('(www\.\w+\.com)/(\w+)',r'\1',regex=True).drop_duplicates().index]


                                          Tweets                 Date
0  The Interstate is closed www.txdot.com/closed  Mon Aug 03 20:48:42
1     The project is complete www.txdot.com/news  Mon Aug 03 20:15:42

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
  • 2016-05-05
  • 2020-12-17
  • 2019-06-17
相关资源
最近更新 更多