如何检测熊猫数据框在两列范围之间是不是有重复项?
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]
【讨论】:
以上是关于如何检测熊猫数据框在两列范围之间是不是有重复项?的主要内容,如果未能解决你的问题,请参考以下文章