将条件仅应用于Pandas中另一列中的唯一值



我有一个数据帧,其中一列中有一堆唯一值,但我需要找到只满足唯一值而不是整个数据帧的特定条件的位置。

COL1 | VAR1 | VAR2
A    | 0    | 1
A    | 1    | 2
B    | 0    | 1
B    | 1.5  | 2.5
C    | 0    | 2
C    | 2    | 3 
C    | 3    | 4 
D    | 0    | 1
D    | 2.5  | 4

我想要的结果是找到数据帧中VAR2不等于下一行VAR1的所有位置,仅用于COL1中的唯一值。例如,以下输出

COL1 | VAR1  | VAR2
B    | 0     | 1 
D    | 0     | 1

我已经应用了以下代码来使我的条件发挥作用。但我不知道如何只为的唯一值做这件事

[df['VAR1'] != df['VAR2'].shift(-1)]

出于显而易见的原因,这给了我COL1中下一个值唯一的所有位置。

我们将非常感谢你的帮助。感谢您花时间仔细研究我的问题:(

使用duplicated怎么样?

mask = (df['VAR1'] != df['VAR2'].shift(-1)) & (~df['VAR1'].duplicated())
df[mask]

最新更新