【问题标题】:age calculation in pandas data frame熊猫数据框中的年龄计算
【发布时间】:2021-03-26 03:28:13
【问题描述】:

我的数据框看起来像 -

id       dob 
1       13/01/1978  
2       03/08/1957
3       22/12/1977

我想根据 'dob' 列计算年龄。

id       dob             age
1       13/01/1978        43    
2       03/08/1957        64
3       22/12/1976        44

我已经完成了下面的代码,但它不起作用

now = datetime.datetime.now()
data['dob'] = pd.to_datetime(data['dob'])
data['age'] = (now.date() - data['dob']).astype('<m8[Y]')

【问题讨论】:

  • df['dob'] = pd.to_datetime(df['dob']) now = pd.to_datetime('now')(now - df['dob']).astype('
  • @orbit - DateParseError: Invalid date specified (0/1)...不工作

标签: python pandas scikit-learn


【解决方案1】:

这里有一个解决方案:

d = { 'Id': [1,2,3],
      'dob': ['13/01/1978', '03/08/1957', '22/12/1977'] }
df = pd.DataFrame(d)
df['dob']= pd.to_datetime(df['dob'])
now = datetime.datetime.now()
df['age'] = df['dob'].apply(lambda x: now.year - x.year)


#Output:

    Id  dob         age
0   1   1978-01-13  43
1   2   1957-03-08  64
2   3   1977-12-22  44

这个版本更精确,因为基于天而不是年份:

df['age_2'] =  df['dob'].apply(lambda x: int((now - x).days / 365.25) )

#Output: 

    Id   dob        age age_2
0   1   1978-01-13  43  43
1   2   1957-03-08  64  64
2   3   1977-12-22  44  43

【讨论】:

  • 这是可行的 - 但如果是 4 个月,并且 dob 在 2 月过生日怎么办?我想应该是特定日期的。
  • 是的。正如我提到的,基于日期的版本更精确。使用适合您的任何一个,如果您觉得有用,请接受答案。
猜你喜欢
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
相关资源
最近更新 更多