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

标签 python regex python-3.x pandas

我正在规范化 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

关于python - 给定以下约束,如何将一些数字连接到另一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353803/

相关文章:

javascript - 一种正则表达式允许正好 5 位数字,数字前后有一个可选的空格?

python - 如何使用 IDW 将 xarray 从高分辨率重新网格化为低分辨率

Python os- 当我使用 os.mkdir 创建目录时,os.path.isdir 告诉我该目录不存在

java - 如何返回从字符串中的某个索引开始的 float ?

python - 将包含 pandas Series 的列转换为特征

java性能问题-正则表达式VS内部String方法

python - 执行功能的条件

python - 如何在流水线后对回归预测进行逆变换?

python - 统计Python中每个值的范围

python - 如何在Python中打开一个已经打开的文件?