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

时间:2019-03-26 02:45:40

标签: python pandas

我无法弄清楚在某种情况下如何清除行(但是保持第一次出现并清除具有该值的每一行)。

我尝试使用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 

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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