gpt4 book ai didi

python - 如何通过使用将参数保留在同一列中的第一个和最后一个来删除 pandas df 列中的重复值

转载 作者:行者123 更新时间:2023-11-30 21:57:57 26 4
gpt4 key购买 nike

我有一个像下面这样的 df

例如 Df

Index     a
0 1
1 1
2 1
3 1
4 2
5 3
6 4
7 5
8 6
9 7
10 7
11 7
12 7

我需要什么

我想删除重复的值行,以便我想使用 df.drop_duplicate (subset = 'a',keep = 'last')对于顶部重复项并使用 df.drop_duplicate (subset = 'a',keep = 'first')对于底部的重复项。就像下面....

Index         a
3 1
4 2
5 3
6 4
7 5
8 6
9 7

我相信会有一些简单的方法来解决上述问题。

最佳答案

这是一种方法:

first = df.a.ne(df.a.shift(-1)).idxmax()
last = df.a.ne(df.a.shift(1))[::-1].idxmax()
df.loc[first:last,:]

输出

   a
3 1
4 2
5 3
6 4
7 5
8 6
9 7

详细信息

firstlast 将用于计算数据帧的起始索引和最终索引,以获得预期的输出。两种情况下的第一个 True 索引可以使用 DataFrame.idxmax 获得:

x = df.a.ne(df.a.shift(-1))
print(x)

0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 True
8 True
9 False
10 False
11 False
12 True
Name: a, dtype: bool

print(x.idxmax())
# 3

对于最后一个索引:

y = df.a.ne(df.a.shift(1))[::-1]
print(y)

0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 True
8 True
9 False
10 False
11 False
12 True
Name: a, dtype: bool

print(y.idxmax())
# 9

关于python - 如何通过使用将参数保留在同一列中的第一个和最后一个来删除 pandas df 列中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100263/

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