Python 使用熊猫检测重复组

Python 使用熊猫检测重复组,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个带有日期字段的表,我想检测数据不重复的日期。让我们假设数据如下所示: Day Code Value 01/03/2020 A 10 01/03/2020 B 15 01/03/2020 C 20 02/03/2020 A 10 02/03/2020 B 15 02/03/2020 C 20 03/03/2020 A 10 03/03/2020 B 20 03/03/2020 C 20 04/03/2020 A 10

我有一个带有日期字段的表,我想检测数据不重复的日期。让我们假设数据如下所示:

Day        Code Value
01/03/2020  A   10
01/03/2020  B   15
01/03/2020  C   20
02/03/2020  A   10
02/03/2020  B   15
02/03/2020  C   20
03/03/2020  A   10
03/03/2020  B   20
03/03/2020  C   20
04/03/2020  A   10
04/03/2020  B   15
我想按天对数据进行分组。在本例中,2020年3月2日与2020年3月1日相同。然而,在2020年3月3日,B的值发生了变化。此外,在2020年3月4日,代码C已消失

我看到的第一种方法是循环数据,按天(a)过滤数据集,并通过检查
a.equals(b)
是否为
TRUE
将结果与前一天的切片进行比较。我知道这是可行的,但它根本没有效率,因为这意味着需要进行大量的切片

是否有任何
groupby
操作可以完成该任务


非常感谢。

如果我理解正确,这是删除重复天数的一种方法,即(
code
Value
)对与其他日期完全匹配的天数

unstacked = df.set_index(['Day', 'Code']).unstack()
unstacked
           Value            
Code           A     B     C
Day                         
01/03/2020  10.0  15.0  20.0
02/03/2020  10.0  15.0  20.0
03/03/2020  10.0  20.0  20.0
04/03/2020  10.0  15.0   NaN

res = unstacked.drop_duplicates().stack().reset_index()               
res['Value'] = res['Value'].astype(int)
res
          Day Code  Value
0  01/03/2020    A     10
1  01/03/2020    B     15
2  01/03/2020    C     20
3  03/03/2020    A     10
4  03/03/2020    B     20
5  03/03/2020    C     20
6  04/03/2020    A     10
7  04/03/2020    B     15

我们可以使用
GroupBy.agg
然后使用
duplicated
删除重复项:

dups = df.astype(str).groupby('Day').agg(''.join).duplicated()
df[~df['Day'].map(dups)]

           Day Code  Value
0   01/03/2020    A     10
1   01/03/2020    B     15
2   01/03/2020    C     20
6   03/03/2020    A     10
7   03/03/2020    B     20
8   03/03/2020    C     20
9   04/03/2020    A     10
10  04/03/2020    B     15

你能把预期的产量也加上吗?非常感谢。它工作得很好,也很简单。谢谢谢谢你的方法。它也很有效。我觉得这比彼得的建议不那么直观,但效果也很好。非常感谢。