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

如何在Pandas DataFrame中将末尾四位为9999的数值替换为0101

替换Pandas DataFrame中year列末尾四位为9999的数值

先还原你的DataFrame:

import pandas as pd

df = pd.DataFrame({
    'OrdNo': [1,2,3,4,5,6,7,8,9],
    'year': [20059999,20070830,20070719,20030719,20039999,20070911,20050918,20070816,20069999]
})

下面提供两种实用的处理方法:

方法一:字符串正则替换

将year列转为字符串,用正则匹配末尾的9999并替换为0101,最后转回整数类型:

df['year'] = df['year'].astype(str).str.replace(r'9999$', '0101', regex=True).astype(int)
  • r'9999$' 确保只匹配末尾四位是9999的内容
  • 转回整数是为了保持原列的数值格式

方法二:数值运算处理

如果year列本身是整数类型,用数值运算更高效:

# 筛选出末尾四位为9999的行
mask = df['year'] % 10000 == 9999
# 对符合条件的行,保留前四位并拼接0101(即101)
df.loc[mask, 'year'] = (df.loc[mask, 'year'] // 10000) * 10000 + 101
  • df['year'] % 10000 取末尾四位,判断是否等于9999
  • df['year'] // 10000 取前四位,乘以10000后加101,得到类似20050101的数值

处理后的最终结果:

OrdNo      year
0      1  20050101
1      2  20070830
2      3  20070719
3      4  20030719
4      5  20030101
5      6  20070911
6      7  20050918
7      8  20070816
8      9  20060101

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:32:47