我无法弄清楚在某种情况下如何清除行(但是保持第一次出现并清除具有该值的每一行)。
我尝试使用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
答案 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