Python 随机丢弃重复项

Python 随机丢弃重复项,python,pandas,Python,Pandas,在Pandas中,我们可以使用dataframe.drop_duplicates()删除重复项,默认情况下保留重复数据的第一行。如果keep_last=True,则保留最后一行。 我们如何使用pandasdrop\u duplicate保留任意随机行并删除重复行?也许: idx = np.random.permutation(np.arange(len(df))) df.iloc[idx].drop_duplicates() 实现这一点的蟒蛇式方法: df = df.sample(frac=1

Pandas
中,我们可以使用
dataframe.drop_duplicates()
删除重复项,默认情况下保留重复数据的第一行。如果
keep_last=True
,则保留最后一行。 我们如何使用pandas
drop\u duplicate
保留任意随机行并删除重复行?

也许:

idx = np.random.permutation(np.arange(len(df)))
df.iloc[idx].drop_duplicates()

实现这一点的蟒蛇式方法:

df = df.sample(frac=1).drop_duplicates()
在这里,我们所取的样本等于数据帧的完整大小,不需要替换。这有效地洗牌了所有行的位置,允许我们删除重复的行,并保留先前随机化的第一行

如果需要按顺序保留索引,还可以重置它:

df = df.sample(frac=1).drop_duplicates().reset_index(drop=True)

如果您想基于数据帧中的列子集进行删除,这一点也非常有效,这在顶部答案中是无法实现的。