ValueError:时间数据“19800210”与格式“%y%m%d”(匹配)不匹配

2024-06-16 08:49:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表,其中包含如下列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)


Tags: importdfasgendermalefemalenikolapd
1条回答
网友
1楼 · 发布于 2024-06-16 08:49:43

您正在将日期格式设置为%y%m%d,这相当于YearMonthDay 但是,数据中有分隔年、月和日的连字符。因此,您需要在代码的最后一行反映这一点

同样从{a1}{}开始是两位数的年份(80,99,86)。您需要%Y,因为这是一个四位数的年份(1980年、1999年、1986年)

因此,您的最后一行应该是

df['DateOfBirth'] = pd.to_datetime(df['DateOfBirth'], format='%Y-%m-%d')

相关问题 更多 >