我有一个表,它包含这样的列DateOfBirth:
Gender FullName DateOfBirth
0 Male Stan Smith 1980-02-10
1 Male Nikola Griffin 1999-12-20
2 Female Ruby Moore 1986-03-03
我想根据这个答案找出每个全名的年龄https://stackoverflow.com/a/26789573/12582712,我正在做这个
import datetime as DT
import io
import numpy as np
import pandas as pd
name = {'Gender': ['Male','Male','Female'],
'FullName': ['Stan Smith','Nikola Griffin','Ruby Moore'],
'DateOfBirth' : ['1980-02-10', '1999-12-20', '1986-03-03']
}
df = pd.DataFrame(name, columns = ['Gender', 'FullName', 'DateOfBirth'])
now = pd.Timestamp('now')
df['DateOfBirth'] = pd.to_datetime(df['DateOfBirth'], format='%y%m%d'
但当我在做最后一个代码时,它显示ValueError: time data '1980-02-10' does not match format '%y%m%d' (match)
您将日期格式设置为%y%m%d
,相当于YearMonthDay但是,数据中有分隔年、月和日的连字符。因此,您需要在代码的最后一行中反映这一点
文档%y
中还有一个两位数的年份(80、99、86(。您需要%Y
,因为这是一个四位数的年份(1980、1999、1986(。
因此,你的最后一行应该是
df['DateOfBirth'] = pd.to_datetime(df['DateOfBirth'], format='%Y-%m-%d')