首页 > 解决方案 > 在 Python 中证明 YEAR 列数字的合理性

问题描述

我有一个大数据集。我将 CSV 转换为带有熊猫的数据框。该列包括从 1965 年到 2015 年的年份。该列的样本类似于

1965.0
  66.0
  67.0
   .
   .
   .
  69.0
1970.0
  71.0
   .
   .
  79.0
1980.0
   . 
   .
   .
2000.0
   1.0
   2.0
    .
    .
    .
  15.0

所以我的问题是如何在没有最后一个 .0 的情况下将所有此列更改为 4 位格式

顺便说一句,当我使用 .info() 检查我的数据时,此列是:

Year                51 non-null    object

谢谢

标签: pythondatetimedigits

解决方案


您可以将列转换为float,应用分别添加 1900 或 2000 的自定义函数。int如果这对您更有用,则将其输出转换为类型。前任:

import pandas as pd

df = pd.DataFrame({'y': ['1970.0',
                           '71.0',
                           '79.0',
                         '1980.0',
                         '2000.0',
                            '1.0',
                            '2.0',
                           '15.0']})

def to_4digit(i):
    if i < 1900:
        if i >= 65:
            return 1900 + i
        return 2000 + i
    return i

df['y'] = df['y'].astype(float).apply(to_4digit).astype(int)
# df['y']
# 0    1970
# 1    1971
# 2    1979
# 3    1980
# 4    2000
# 5    2001
# 6    2002
# 7    2015

推荐阅读