我有一个包含出生年份的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)
关于如何有效执行此操作的任何建议?
答案 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