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

如何将DataFrame的MinYear与MaxYear列转换为连续年份行

解决DataFrame年份范围展开问题

核心思路

用Pandas的apply为每行生成倒序的年份序列,再通过explode把列表拆分为多行,最后移除原有的MinYear和MaxYear列即可实现需求。

代码实现

  1. 构造原始DataFrame:
import pandas as pd

df = pd.DataFrame({
    'Value': ['5,2', '3,3'],
    'MinYear': [1997, 1996],
    'MaxYear': [2000, 2000]
})
  1. 生成年份序列并展开:
# 为每行生成从MaxYear到MinYear的倒序年份列表
df['Year'] = df.apply(lambda row: list(range(row['MaxYear'], row['MinYear'] - 1, -1)), axis=1)
# 将列表列拆分为多行,同时删除原年份范围列
result_df = df.explode('Year').drop(columns=['MinYear', 'MaxYear'])

执行后得到的结果如下:

ValueYear
5,22000
5,21999
5,21998
5,21997
3,32000
3,31999
3,31998
3,31997
3,31996

补充说明

你提供的期望结果中,第二组Value=3,3的年份包含1995,但原始数据的MinYear是1996,这大概率是笔误。如果确实需要包含1995,只需调整range的结束值:

df['Year'] = df.apply(lambda row: list(range(row['MaxYear'], row['MinYear'] - 2, -1)), axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:40:30