Python 无法从包含日期的数据框列中提取年份
嗨,我有一个数据框,其中有一列包含日期(请参见下文)。我想从他们每一个人身上提取几年Python 无法从包含日期的数据框列中提取年份,python,pandas,Python,Pandas,嗨,我有一个数据框,其中有一列包含日期(请参见下文)。我想从他们每一个人身上提取几年 0 2017-01-25 1 2009-10-22 2 2015-10-21 3 2013-06-26 4 2018-05-16 5 2016-11-09 我试着用这个公式 df['year']=(datetime.strtime(df['Date'],'%Y-%m-%d').year) 但是我得到了下面的错误 Traceback (most recent ca
0 2017-01-25
1 2009-10-22
2 2015-10-21
3 2013-06-26
4 2018-05-16
5 2016-11-09
我试着用这个公式
df['year']=(datetime.strtime(df['Date'],'%Y-%m-%d').year)
但是我得到了下面的错误
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: strptime() argument 1 must be str, not Series
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:strTime()参数1必须是str,而不是Series
如何修复此问题?您正在将整个列传递给
datetime.strtime()
函数
您需要的是.apply()
对Date
列的每个值应用一个函数以获取其年份,例如:
def get_year(x):
return datetime.strptime(x, '%y-%m-%d').year
df['year'] = df.Date.apply(get_year)
如果该列中的每个字符串都与该日期格式匹配,则您甚至不需要在此处使用datetime:
import pandas as pd
df = pd.DataFrame(dict(
Date = [
'2017-01-25','2009-10-22','2015-10-21',
'2013-06-26','2018-05-16','2016-11-09',
]
))
df['year'] = df['Date'].str.split('-',1,True)[0].astype(int)
print(df)
输出:
Date year
0 2017-01-25 2017
1 2009-10-22 2009
2 2015-10-21 2015
3 2013-06-26 2013
4 2018-05-16 2018
5 2016-11-09 2016
我想你可以转换日期和时间,用
dt
计算年份
df['year'] = pd.to_datetime(df['Date'], format='%Y-%m-%d').dt.year
我该如何解决这个问题?这个错误对我来说很清楚,不是吗?你做过调试和研究吗?请提供一个。谢谢你是对的,我通过了整个专栏,这是问题。我已将您的答案压缩为lambda格式,因为这个df1['year1']=df1['EffectiveDate'].apply(lambda x:datetime.strtime(x,%Y-%M-%d').year)是@user13412850我发现lambda函数更容易键入,但更难阅读。您还可以使用
df1.EffectiveDate
而不是df1['EffectiveDate']
使其更干净。