Skip to main content
 首页 » 编程设计

python之给定以下约束,如何将一些数字连接到另一个数字

2025年05月04日14sky-heaven

我正在规范化 pandas 数据框中的一些年份值。

   years 
 
0  2011 
1  2012 
2  2050 
3  11 
4  23 
5  01 
 .... 
n  2015 

如您所见,有些值是错误的,因为它们必须是 4 位数字。因此,我想将它们转换成四位数字:

   year 
 
0  2011 
1  2012 
2  2050 
3  2011 
4  2023 
5  2001 
  ... 
n  2015 

对于上述情况,在 previous question 中我了解到您可以使用函数替换来完成此任务:

df['years'].replace('\b\d{2}\b.*?', r'20\2', regex=True) 

我尝试了不同的正则表达式:

^[0-9]{2} 
^[0-9]{2}.* 
(\d\d)* 
^(\d{2}) 
r'\b\d{2}\b' 

但是,这些都不起作用。因此,如何用四位数字(添加 20)对上述数据帧进行归一化?

请您参考如下方法:

df.years = pd.to_numeric(df.years, errors='coerce') 
 
In [12]: df 
Out[12]: 
   years 
0   2011 
1   2012 
2   2050 
3     11 
4     23 
5      1 
6   2015 
 
In [13]: df.loc[df.years <= 50, 'years'] += 2000 
 
In [14]: df 
Out[14]: 
   years 
0   2011 
1   2012 
2   2050 
3   2011 
4   2023 
5   2001 
6   2015 

更新:转换为字符串:

In [35]: df 
Out[35]: 
    years 
0  2011.0 
1  2012.0 
2  2050.0 
3  2011.0 
4  2023.0 
5  2001.0 
6     NaN 
7  2015.0 
 
In [36]: df.dtypes 
Out[36]: 
years    float64 
dtype: object 
 
In [37]: df.years.where(df.years.notnull(), '') 
Out[37]: 
0    2011 
1    2012 
2    2050 
3    2011 
4    2023 
5    2001 
6 
7    2015 
Name: years, dtype: object