Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将MM-DD添加到年份_Python_Pandas_Datetime - Fatal编程技术网

Python 将MM-DD添加到年份

Python 将MM-DD添加到年份,python,pandas,datetime,Python,Pandas,Datetime,我有一个包含出生年份的熊猫数据框架: Name Birth Year Joe 2000 Bill 1998 Mike 1996 Frank 1995 我想添加一个名为“DOB”的列,将相同的MM-DD添加到出生年份中,这样数据框看起来像: Name Birth Year DOB Joe 2000 2000-04-13 Bill 1998 1998-04-13 M

我有一个包含出生年份的熊猫数据框架:

Name     Birth Year
Joe         2000
Bill        1998
Mike        1996
Frank       1995
我想添加一个名为“DOB”的列,将相同的MM-DD添加到出生年份中,这样数据框看起来像:

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) 
关于如何有效地执行此操作,有什么建议吗?

如果希望列的类型为
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
如果希望列的类型为
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

这应该能奏效

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

您遇到的问题是,“出生年份”列可能是一个数字,而不是一个字符串

df['DOB']=df['Birth Year'].astype(str)+“-04-13”
您遇到的问题是,“出生年份”列可能是一个数字而不是字符串 可以获取具有适当命名列的数据帧。所需的最小列为
['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

   Year  Month  Day
0  2000      4   13
1  1998      4   13
2  1996      4   13
3  1995      4   13
pandas.to\u 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

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

谢谢你的帮助@好极了,我能帮上忙!谢谢你的帮助@好极了,我能帮上忙!你想要像datetime一样的结果还是字符串?DatiTimeResults。你想要像datetime一样的结果还是字符串?DatiTimeResults。这很有效;但是,我需要将它格式化为to_datetimeThis works;但是,我需要将它格式化为to_datetime