2 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個贊
這可以通過將索引變成列來完成。
下面是一個示例數(shù)據(jù)集(僅供參考,我認(rèn)為有人否決了您的問題,因?yàn)樗话纠龜?shù)據(jù)集):
df=pd.DataFrame({'a':[1,2,2,3,4,4,5], 'b':[2,2,2,3,4,5,5]}, index=[0,1,1,2,3,5,5])
輸出:
a b
0 1 2
1 2 2
1 2 2
2 3 3
3 4 4
5 4 5
5 5 5
然后您可以使用以下行。第一個 reset_index() 創(chuàng)建一個帶有索引號的新列。然后,您可以根據(jù)新索引列和另一列(在本例中為 b)刪除重復(fù)項。之后,您可以使用 set_index('index') 將索引設(shè)置為原始索引值:
df.reset_index().drop_duplicates(subset=['index','b']).set_index('index')
輸出:
a b
index
0 1 2
1 2 2
2 3 3
3 4 4
5 4 5

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個贊
您可以使用 pandas 的.duplicated()
方法而不是.drop_duplicates()
.
如果您關(guān)心索引和某些列中的重復(fù)項,您可以分別用 和b標(biāo)識相應(yīng)的索引。使用運(yùn)算符組合這些,然后使用 a 取反該交集,您會得到類似df.index.duplicated()df.duplicated(subset="b")&~
clean_df = df[~(df.index.duplicated() & df.duplicated(subset="b"))]
print(clean_df)
輸出:
? ?a? b
0? 1? 2
1? 2? 2
2? 3? 3
3? 4? 4
5? 4? 5
添加回答
舉報