2015-07-01 80 views
3

我有一个数据框,如下所示,并且我试图减少数据框以仅包含日期大于变量curve_enddate的行。 df['Date']是在datetime,因此我试图转换curve_enddate[i][0],它给出了一个形式2015-06-24形式的字符串为datetime,但得到错误ValueError: time data '2015-06-24' does not match format '%Y-%b-%d'将字符串转换为日期时间时的ValueError

   Date  Maturity  Yield_pct Currency 
0  2015-06-24   0.25    na  CAD 
1  2015-06-25   0.25 0.0948511020  CAD 

在那里我得到了错误的行:

df = df[df['Date'] > time.strptime(curve_enddate[i][0], '%Y-%b-%d')] 

谢谢

回答

2

你不能比较一个元组time.struct_time的这是什么time.strptime返回到Timestamp,所以你还需要更改以及使用m这是一个月使用'%Y-%m-%d'作为十进制数字。您可以使用pd.to_datetime创建要比较的对象:

df = df[df['Date'] > pd.to_datetime(curve_enddate[i][0], '%Y-%m-%d')] 
+0

@PadraicCunnigham你是对the'time.struct_time tuple'问题。但是,我现在得到错误'TypeError:无法比较类型'str''的类型'时间戳'。你知道这是为什么吗? – user131983

+1

是的,您没有将日期列转换为日期时间。你使用read_csv来创建df吗? –

+1

尝试'df [df [“Date”]。apply(pd.to_datetime)> pd.to_datetime(curve_enddate [i] [0],'%Y-%m-%d')]]',如果您计划使用日期很多,我会永久性地设置它们。如果您正在使用read_csv,请使用转换器= {“Date”:pd.to_datetime}'投射到datetime –

4

您正在使用错误的日期格式,%b是命名个月(缩写像JanFeb等) ,在编号的月份使用%m

码 -

df = df[df['Date'] > time.strptime(curve_enddate[i][0], '%Y-%m-%d')] 
相关问题