将MM-DD添加到Year Python

时间:2019-11-22 17:27:34

标签: python pandas datetime

我有一个包含出生年份的Pandas DataFrame:

Name     Birth Year
Joe         2000
Bill        1998
Mike        1996
Frank       1995

我想添加一个称为“ DOB”的列,该列将相同的MM-DD添加到出生年份,以便DataFrame看起来像这样:

Name     Birth Year     DOB
Joe         2000       2000-04-13
Bill        1998       1998-04-13
Mike        1996       1996-04-13
Frank       1995       1995-04-13

错误地,这是我的尝试:

df['DOB'] = str(df['Birth Year'] + '-' + '04-13').dt.strftime('%y-%m-%d) 

关于如何有效执行此操作的任何建议?

3 个答案:

答案 0 :(得分:3)

如果希望该列的类型为DateTime,请使用to_datetime

df['DOB'] = pd.to_datetime(df['Birth_Year'].astype(str) + '-04-13', format='%Y-%m-%d')

print(df)

输出

    Name  Birth_Year        DOB
0    Joe        2000 2000-04-13
1   Bill        1998 1998-04-13
2   Mike        1996 1996-04-13
3  Frank        1995 1995-04-13

答案 1 :(得分:1)

这应该可以解决问题

df['DOB'] = df['Birth Year'].astype(str) + "-04-13"

您遇到的问题是,“生日”列可能是数字而不是字符串

答案 2 :(得分:1)

pandas.to_datetime

可以采用带有适当命名列的数据框。所需的最小列为['Year', 'Month', 'Day']

dates = pd.DataFrame({'Year': df['Birth Year'], 'Month': 4, 'Day': 13})
df.assign(DOB=pd.to_datetime(dates))

    Name  Birth Year        DOB
0    Joe        2000 2000-04-13
1   Bill        1998 1998-04-13
2   Mike        1996 1996-04-13
3  Frank        1995 1995-04-13

查看dates的样子

dates

   Year  Month  Day
0  2000      4   13
1  1998      4   13
2  1996      4   13
3  1995      4   13