You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现基于datetime列的DataFrame随机化drop_duplicates?

实现Pandas按日期列随机去重的方法

Pandas的drop_duplicates方法确实没有keep='random'这个参数,不过可以通过两种简单的方式实现随机保留重复项的需求:

方法一:先打乱行顺序再去重

先对整个DataFrame的行进行随机打乱,再执行去重操作,此时keep='first'保留的就是随机位置的行:

# 随机打乱所有行,frac=1表示取全部数据
df_shuffled = df_filtered.sample(frac=1)
# 按date列去重,保留打乱后的第一条(即随机项)
df_shuffled.drop_duplicates(subset=['date'], keep='first', inplace=True)
# 可选:如果需要恢复原索引的顺序,可执行排序
df_result = df_shuffled.sort_index()

如果需要固定随机结果(方便复现),可以给sample方法加上random_state参数,比如sample(frac=1, random_state=42)。

方法二:分组后随机选取单行

直接按date列分组,每组随机抽取一行,这种方法更高效,尤其适合大数据集:

# 按date分组,每组随机选1行
df_result = df_filtered.groupby('date').sample(n=1)

同样,添加random_state参数可以固定随机结果,比如sample(n=1, random_state=123)。

两种方法都能实现你要的随机去重效果,根据自己的需求选择即可。

内容的提问来源于stack exchange,提问作者a7dc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:05:32