如何检测熊猫数据框在两列范围之间是不是有重复项?

Posted

技术标签:

【中文标题】如何检测熊猫数据框在两列范围之间是不是有重复项?【英文标题】:How to detect if pandas dataframe has duplicates between a two column range?如何检测熊猫数据框在两列范围之间是否有重复项? 【发布时间】:2021-12-18 23:27:48 【问题描述】:

我有一个如下的数据框:

A B Monthfrom Monthto
XCP25 MW 202006 202011
XCP25 MW 202007 202012
XCP25 XY 202006 202011
FHA23 CY 202006 202011
FHA23 ZW 202006 202011

如果 A 列和 B 列具有相同的行值,我需要检测它们的 Monthfrom 和 Monthto 值是否匹配相似的范围。在示例中,前两行匹配 Monthfrom 和 Monthto 值之间的范围,并且 A 列和 B 列具有相同的键。任何想法如何检测到这一点?

【问题讨论】:

【参考方案1】:

首先计算每行的月数范围(另请参阅this question 了解各种选项)。

然后按 A、B 和范围分组并计算行数。计数大于 1 的每一行都是您要查找的重复项之一。

df['Monthfrom'] = pd.to_datetime(df.Monthfrom, format='%Y%m').dt.to_period('M')
df['Monthto'] = pd.to_datetime(df.Monthto, format='%Y%m').dt.to_period('M')

df['range'] = df.Monthto.view('int') - df.Monthfrom.view('int')

counts = df.groupby(['A', 'B', 'range']).count()

duplicates = counts.loc[counts.Monthto > 1]

【讨论】:

以上是关于如何检测熊猫数据框在两列范围之间是不是有重复项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VBA 在 Excel 宏中删除具有两列的重复项?

熊猫,对于每一行获取两列之间最大列的值

如何使用 python 在两列中扩展具有日期范围的数据框?

如何在PHP中检查时间是不是在两次之间[重复]

在两列范围之间选择值

具有两列的 GridView,第一项跨越两列