2 回答
TA贡献1906条经验 获得超10个赞
这可以通过将索引变成列来完成。
下面是一个示例数据集(仅供参考,我认为有人否决了您的问题,因为它不包含示例数据集):
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() 创建一个带有索引号的新列。然后,您可以根据新索引列和另一列(在本例中为 b)删除重复项。之后,您可以使用 set_index('index') 将索引设置为原始索引值:
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贡献1785条经验 获得超4个赞
您可以使用 pandas 的.duplicated()
方法而不是.drop_duplicates()
.
如果您关心索引和某些列中的重复项,您可以分别用 和b标识相应的索引。使用运算符组合这些,然后使用 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
添加回答
举报