【发布时间】:2021-12-12 22:22:57
【问题描述】:
我正在尝试获取我的数据框并删除与另一行中的值相对应的每一行,具体取决于每个行类别是否包含超过阈值的值。虽然我觉得这应该是一个简单的“如果”条件语句,但我很困惑这是否真的像我想象的那么简单,或者这是否更复杂。我正在使用 python 和熊猫。我将通过下面的示例进行演示,以更好地传达此问题。
我有以下数据框:
Date Category Value
---------------------------------------
2015-06-02 1 2
2015-06-03 1 9
2015-06-04 1 2
2015-06-05 2 2
2015-06-06 2 8
2015-06-07 2 11
2015-06-08 2 2
2015-06-09 4 2
2015-06-10 4 5
2015-06-11 4 12
2015-06-12 4 2
2015-06-13 6 2
2015-06-14 6 8
2015-06-15 6 2
2015-06-16 8 2
2015-06-17 8 6
2015-06-18 8 10
2015-06-19 8 2
如您所见,行按与“类别”列对应的特定 ID 进行分类。所以在这个例子中,有 5 个“类别”:“1”、“2”、“4”、“6”、“8”。只要类别保持不同,它们不会为每个类别增加 1 无关紧要。因此,您将看到一个模式,因为这是日期时间顺序数据,对于每个类别,该值从 2 开始,中间有一些值,无论有多少,并以 2 结束。所以每个类别都有“介于两者之间”的值值 2。我想要做的是获取数据框并删除两个值 2 之间的类别,对于该唯一类别,没有值 >= 10。如您所见,这意味着删除类别1(在 2 之间有 9),并删除类别 6(在 2 之间有 8)。当然,2 之间可以有任意数量的值,但其中至少一个必须 >= 10 所以我想生成以下数据框:
Date Category Value
---------------------------------------
2015-06-05 2 2
2015-06-06 2 8
2015-06-07 2 11
2015-06-08 2 2
2015-06-09 4 2
2015-06-10 4 5
2015-06-11 4 12
2015-06-12 4 2
2015-06-16 8 2
2015-06-17 8 6
2015-06-18 8 10
2015-06-19 8 2
如何在 python 中做到这一点?虽然我想我会写一个条件语句,说“如果 df['Value'] 中的值
【问题讨论】:
-
在您的输入数据中,所有类别都以
3开头,而不是描述中的2... -
对不起!我的意思是用
2替换所有3值!我刚刚解决了这个问题。对困惑感到抱歉。我更新了我的帖子。
标签: python pandas dataframe conditional-statements