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

如何在DataFrame处理后恢复原始顺序并修改unit列命名

问题:恢复DataFrame原始顺序并重新命名unit列

核心诉求:保留数据的原始顺序,同时将unit列按原始序列命名为unit01、unit02……格式,仅修改unit列名称。

原始DataFrame

name   unit   col1   col2
----[0]  01    1.72   3.87
----[0]  02    1.34   4.55
----[0]  03    6.25   6.55
----[0]  01    7.94   7.22
----[0]  02    5.07   5.10
----[0]  03    3.39   2.66
----[1]  01    4.62   6.27
----[1]  02    5.34   5.45
----[1]  03    9.95   2.95
----[1]  01    3.94   1.82
----[1]  02    2.47   3.50
----[1]  03    2.39   0.76
...     ...     ...    ... 
----[6]  01    0.34   0.15
----[6]  02    6.25   6.25
----[6]  03    3.65   5.65
----[6]  01    1.74   4.32
----[6]  02    2.67   6.52
----[6]  03    8.99   5.76

导致顺序打乱的处理代码

执行以下代码后,DataFrame顺序被打乱,且unit列按name分组编号,不符合需求:

df = df.sort_values(by=["name"], ascending=False)
df['unit'] = 'unit' +df.groupby('name').cumcount().add(1).astype(str).str.zfill(2)

解决方案

要恢复原始顺序并正确生成unit列,关键是先记录原始数据的顺序标记,再基于标记恢复顺序并重新编号:

情况1:未执行错误代码(从原始数据开始处理)

直接基于原始行顺序生成unit列,无需排序:

# 按原始数据的行顺序生成unit列,从unit01开始递增
df['unit'] = 'unit' + (df.reset_index(drop=True).index + 1).astype(str).str.zfill(2)

情况2:已执行错误代码,需恢复原始顺序

如果已执行错误代码且无原始数据备份,可通过索引或预设标记恢复:

  • 若原始索引为连续序列,直接按索引排序:
# 按原始索引恢复顺序
df = df.sort_index()

# 重新生成unit列
df['unit'] = 'unit' + (df.reset_index(drop=True).index + 1).astype(str).str.zfill(2)
  • 若原始索引不连续,建议处理前先添加顺序标记(如果没加只能依赖备份):
# 处理前先添加原始顺序标记
df['original_order'] = range(len(df))

# 执行打乱操作后,按标记恢复顺序
df = df.sort_values(by='original_order').drop('original_order', axis=1)

# 生成unit列
df['unit'] = 'unit' + (df.reset_index(drop=True).index + 1).astype(str).str.zfill(2)

期望结果

处理后的数据将保留原始顺序,unit列按序列编号:

name   unit   col1   col2
----[0] unit01    1.72   3.87
----[0] unit02    1.34   4.55
----[0] unit03    6.25   6.55
----[0] unit04    7.94   7.22
----[0] unit05    5.07   5.10
----[0] unit06    3.39   2.66
       ...   ...   ...     ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:37:44