Python Pandas保留特定值的第一个出现,并删除具有相同特定值的其余行

问题描述 投票:2回答:2

我无法弄清楚如何摆脱行(但保留第一次出现并摆脱具有该值的每一行)与某些条件。

我尝试使用drop_duplicate,但这将摆脱一切。我只是想摆脱一些具有特定值的行(在同一列内)

数据的格式如下:

Col_A | Col_B
 5    |   1
 5    |   2
 1    |   3
 5    |   4
 1    |   5
 5    |   6 

我想要它(基于Col_A):

Col_A | Col_B
 5    |   1
 5    |   2
 1    |   3
 5    |   4
 5    |   6 
python pandas
2个回答
1
投票

使用idxmax并检查索引。这当然假设您的索引是唯一的。

m = df.Col_A.eq(1)                            # replace 1 with your desired bad value
df.loc[~m | (df.index == m.idxmax())]

   Col_A  Col_B
0      5      1
1      5      2
2      1      3
3      5      4
5      5      6

0
投票

试试这个:

df1=df.copy()
mask=df['Col_A'] == 5
df1.loc[mask,'Col_A'] = df1.loc[mask,'Col_A']+range(len(df1.loc[mask,'Col_A']))
df1=df1.drop_duplicates(subset='Col_A',keep='first')
print(df.iloc[df1.index])

输出:

   Col_A  Col_B
0      5      1
1      5      2
2      1      3
3      5      4
5      5      6
© www.soinside.com 2019 - 2024. All rights reserved.