Pandas 熊猫的日子一成不变

Pandas 熊猫的日子一成不变,pandas,Pandas,当仪器发生故障并记录了一整天的重复测量值时,我需要从数据集中删除整天的数据。在下面的示例中,我希望删除2020-08-27的所有行,并保留2020-08-28的所有行 dates = ['2020-08-27', '2020-08-27', '2020-08-27', '2020-08-28', '2020-08-28', '2020-08-28'] values = [100, 100, 100, 200, 201, 200] df = pd.DataFrame({"date&quo

当仪器发生故障并记录了一整天的重复测量值时,我需要从数据集中删除整天的数据。在下面的示例中,我希望删除2020-08-27的所有行,并保留2020-08-28的所有行

dates = ['2020-08-27', '2020-08-27', '2020-08-27', '2020-08-28', '2020-08-28', '2020-08-28']
values = [100, 100, 100, 200, 201, 200]
df = pd.DataFrame({"date": dates, "value": values})

         date  value
0  2020-08-27    100
1  2020-08-27    100
2  2020-08-27    100
3  2020-08-28    200
4  2020-08-28    201
5  2020-08-28    200
这是我尝试过的代码,无法正常工作:

df.drop_duplicates(subset=["date", "value"], keep=False)

         date  value
4  2020-08-28    201
正确的方法是什么

编辑: 事实证明,我需要它来处理多个值列。在这种情况下,我想保留2020-08-28行

dates = ['2020-08-27', '2020-08-27', '2020-08-27', '2020-08-28', '2020-08-28', '2020-08-28', '2020-08-28']
values1 = [100, 100, 100, 200, 201, 201, 200]
values2 = [300, 300, 300, 300, 301, 301, 300]
df = pd.DataFrame({"date": dates, "value1": values1, "value2": values2})

         date  value1  value2
0  2020-08-27     100     300
1  2020-08-27     100     300
2  2020-08-27     100     300
3  2020-08-28     200     300
4  2020-08-28     201     301
5  2020-08-28     201     301
6  2020-08-28     200     300

让我们尝试以
groupby
transform
+
nunique
作为数据帧切片的条件:

df[df.groupby('date')['value'].transform('nunique').ne(1)]
输出:

         date  value
3  2020-08-28    200
4  2020-08-28    201
5  2020-08-28    200
        date  value1  value2
3  2020-08-28     200     300
4  2020-08-28     201     301
5  2020-08-28     201     301
6  2020-08-28     200     300
详细信息:按天分组并检查是否有多个不同的值

更新以处理多个列:

df[df.groupby('date')[['value1', 'value2']].transform('nunique').ne(1).all(axis=1)]
输出:

         date  value
3  2020-08-28    200
4  2020-08-28    201
5  2020-08-28    200
        date  value1  value2
3  2020-08-28     200     300
4  2020-08-28     201     301
5  2020-08-28     201     301
6  2020-08-28     200     300

美好的有没有一种方法可以扩展到多个值列?@steve。是的,请解释列中的所有值都是相同的?@steve See update,相同的逻辑,添加了一个条件,即行中的所有值都必须等于1。