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

如何在Pandas中为DataFrame的Year列指定值补零补全位数?

解决DataFrame中Year列值的替换问题

问题背景

我有一个包含Year列的DataFrame,原始数据如下:

Year
202
2021
2022
202
2019

需要实现的需求:将所有值为“202”的列值替换为“2020”,其余值保持不变,预期输出如下:

Year
2020
2021
2022
2020
2019

目前已编写代码:

df['Year_1'] = df['Year'].str.len()

几种可行的实现方法

方法1:直接值替换(最简洁)

利用Pandas的replace方法直接匹配目标值进行替换,无需额外计算长度:

# 若Year列是字符串类型
df['Year'] = df['Year'].replace('202', '2020')

# 若Year列是数值类型,去掉引号即可
df['Year'] = df['Year'].replace(202, 2020)

方法2:结合已写的长度判断逻辑

既然已经计算了字符串长度,可以基于长度筛选出需要修改的行,补充字符:

# 字符串类型场景
df['Year'] = df.apply(lambda row: row['Year'] + '0' if len(row['Year']) == 3 else row['Year'], axis=1)

# 数值类型场景,先转字符串处理再转回数值
df['Year'] = df['Year'].astype(str).apply(lambda x: x + '0' if len(x) == 3 else x).astype(int)

方法3:使用条件判断函数

借助NumPy的np.where实现条件替换,逻辑直观清晰:

import numpy as np

# 字符串类型
df['Year'] = np.where(df['Year'] == '202', '2020', df['Year'])

# 数值类型
df['Year'] = np.where(df['Year'] == 202, 2020, df['Year'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:35:16