Pandas在组中保留第一个重复的交替值

时间:2017-09-22 22:16:45

标签: python pandas

enter image description here

我有一个df看起来像这样。我想要做的是保持每个重复Order_Side中的第一个在一个组内。所以我想删除索引5,8,因为它重复并且索引为20,26。在每个 Var1组

中,Order_Side应该像1买入和1卖出一样交替

我在stackoverflow上阅读了类似的问题并尝试了

df.loc[df['Order_Side'] != df['Order_Side'].shift()]

这会给我

enter image description here

Altough继续交替卖出和买入并保持重复价值的第一个。但它不在每个 Var1 GROUP

因为我只需要在每个Var1组中交替销售和购买,而不是在不同组之间交替。当穿越组时,需要重置。

请看第一张照片中的索引28和34。 34应该保持,因为它现在是一个不同的组。它是8而不是7.因此它不应受交替要求的限制。然后在8组内,它需要再次交替。

1 个答案:

答案 0 :(得分:1)

您可以引入另一个条件,允许任何行与上一行具有不同的Var1组。

cond1 = df['Order_Side'] != df['Order_Side'].shift()
cond2 = df['Var1'] != df['Var1'].shift()
df.loc[cond1 | cond2]