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

在Pandas DataFrame中按年份顺序重新分配连续排名

合并Pandas DataFrame并重新分配排名

原始数据

我有三个对应不同年份的Pandas DataFrame:

2022年数据

ID  YEAR  RANK
500 2022   1
510 2022   2
520 2022   3

2021年数据

ID  YEAR  RANK
501 2021   1
550 2021   2
560 2021   3

2020年数据

ID  YEAR  RANK
505 2020   1
506 2020   2
507 2020   3

需求

将三个DataFrame按2022年→2021年→2020年的顺序合并,并按以下规则重新分配排名:

  • 2022年的排名保持原有值不变
  • 2021年的起始排名为2022年最高排名+1,后续排名依次递增
  • 2020年的起始排名为合并后2021年的最高排名+1,后续排名依次递增

最终需要得到如下格式的结果:

ID  YEAR  RANK
500 2022   1
510 2022   2
520 2022   3
501 2021   4
550 2021   5
560 2021   6
505 2020   7
506 2020   8
507 2020   9

解决方案

假设三个原始DataFrame分别命名为df_2022、df_2021、df_2020,可以通过以下步骤实现需求:

import pandas as pd

# 计算排名偏移量
offset_2021 = df_2022['RANK'].max()
offset_2020 = offset_2021 + df_2021['RANK'].max()

# 调整各年份的排名
df_2021['RANK'] += offset_2021
df_2020['RANK'] += offset_2020

# 按指定顺序合并DataFrame
final_df = pd.concat([df_2022, df_2021, df_2020], ignore_index=True)

# 输出结果
print(final_df)

执行上述代码后,即可得到符合要求的合并结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:03:23