Pandas DataFrame - 删除与前一行特定列具有相同值的行

5
我有一个pandas数据帧,我想检查每一行是否在特定的列(我们称之为“产品类型”)具有相同的值,并且如果是,则删除它。换句话说,在具有特定列上相同值的连续行组中,我只想保留一个。
例如,如果列A是我们不想要连续重复项的列:
input =  
A    B

    0  1    1
    0  2    2
    2  1   10
    2  2   20
    0  11  100
    5  2  200

output =  
A    B

    0  1    1
    2  1   10
    0  11  100
    5  2  200

请参考相关链接:https://dev59.com/d2Ik5IYBdhLWcg3wPL7R#19464054 - EdChum
1个回答

5

这有点棘手,但你可以做类似于以下的事情:

>>> df.groupby((df["A"] != df["A"].shift()).cumsum().values).first()
   A   B    C
1  0   1    1
2  2   1   10
3  0  11  100
4  5   2  200

1
这个怎么样: df = df[df['A'] != df.shift(-1)['A']] - Baron Yugovich
1
@BaronYugovich我宁愿这样做 df = df[df['A'] != df['A'].shift(-1)] - 先选中['A']然后 shift(-1) 只移动一列而不是全部移动整个df - furas
2
这个解决方案只能删除一个连续的重复吗?如果A中有超过两行连续具有相同值的情况怎么办? - panc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接