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

Pandas问题:在列中重复列表操作失败

解决Pandas为多国家重复添加年份序列的问题

你的核心问题是生成的年份序列索引重复,导致赋值时无法和数据框索引对齐。以下是几种直接可行的方案:

方案1:用numpy.tile快速生成匹配序列

先生成1990-2019的年份列表,再用tile把整个年份序列重复189次(对应189个国家),直接赋值给df['year']:

import numpy as np
import pandas as pd

# 生成1990到2019的年份列表(共30个年份)
year_list = list(range(1990, 2020))
# 把年份序列重复189次,刚好匹配5670行(189*30)
df['year'] = np.tile(year_list, 189)

方案2:用列表推导式生成序列

如果不想依赖numpy,用纯Python列表推导式也能生成目标序列:

year_list = list(range(1990, 2020))
# 循环189次,每次输出完整的年份列表
df['year'] = [year for _ in range(189) for year in year_list]

为什么你的原代码报错?

你用years.repeat(30)生成的是每个年份重复30次的序列(比如1990出现30次,接着1991出现30次...),这和你需要的「每个国家对应完整年份序列」的顺序不符。更关键的是,这个序列的索引是原years的索引(0-29)重复30次,存在大量重复值;当你的数据框df索引也有重复时,Pandas无法确定重复索引的对应关系,因此触发ValueError: cannot reindex on an axis with duplicate labels。

内容的提问来源于stack exchange,提问作者S.H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:25:16