gpt4 book ai didi

python - 如果两列中的连续值相同,如何在 python 中删除重复项?

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:08 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

A   B   C
1 8 23
2 8 22
3 9 45
4 9 45
5 6 12
6 4 10
7 11 12

如果 C 也相同,我想在保留连续出现的第一个值的地方删除重复项。例如,此处出现“9”的 B 列是重复的,它们在“C”列中的相应出现也是重复的“45”。在这种情况下,我想保留第一次出现。

预期输出:

A   B   C
1 8 23
2 8 22
3 9 45
5 6 12
6 4 10
7 11 12

我尝试了一些 group by,但不知道如何删除。

代码:

df['consecutive'] = (df['B'] != df['B'].shift(1)).cumsum()
test=df.groupby('consecutive',as_index=False).apply(lambda x: (x['B'].head(1),x.shape[0],
x['C'].iloc[-1] - x['C'].iloc[0]))

这个分组返回给我一个系列,但我想删除。

最佳答案

添加DataFrame.drop_duplicates按 2 列:

df['consecutive'] = (df['B'] != df['B'].shift(1)).cumsum()
df = df.drop_duplicates(['consecutive','C'])
print (df)
A B C consecutive
0 1 8 23 1
1 2 8 22 1
2 3 9 45 2
4 5 6 12 3
5 6 4 10 4
6 7 11 12 5

或者将两个条件与 | 链接起来进行按位 OR:

df = df[(df['B'] != df['B'].shift()) | (df['C'] != df['C'].shift())]
print (df)
A B C
0 1 8 23
1 2 8 22
2 3 9 45
4 5 6 12
5 6 4 10
6 7 11 12

关于python - 如果两列中的连续值相同,如何在 python 中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57989234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com