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

Pandas如何随机打乱DataFrame中年份并按新顺序重排行

按随机年份顺序重排DataFrame的高效方案

核心思路是利用pandas的有序分类类型自定义年份排序规则,全程使用内置矢量化操作,避免循环拼接DataFrame的性能损耗,处理百万级行数据也能秒出结果。

实现代码

import pandas as pd
import random

# 1. 日期格式转换+提取年份辅助列
df[0] = pd.to_datetime(df[0])
df['year_aux'] = df[0].dt.year

# 2. 生成并打乱1996-2018的年份序列
shuffled_years = list(range(1996, 2019))
random.shuffle(shuffled_years)

# 3. 将年份辅助列设为有序分类,指定排序规则为打乱后的年份顺序
df['year_aux'] = pd.Categorical(df['year_aux'], categories=shuffled_years, ordered=True)

# 4. 排序:优先按自定义年份顺序,同一年内保留原始先后顺序(通过原始索引保证)
df = df.sort_values(by=['year_aux', df.index]).drop(columns='year_aux').reset_index(drop=True)

说明

  • 排序时加入原始索引作为第二排序条件,完全保留同一年内原有行的先后顺序,和需求完全匹配
  • 不需要循环遍历年份做数据拼接,性能比逐次concat的方案高10~100倍,数据量越大优势越明显
  • 处理完成后自动删除辅助列、重置索引,输出格式和预期效果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:12:04