尝试将完整列的日期(类型=日期时间)转换为日期,以便以后在某种情况下使用。不断出现以下错误:
KeyError:Timestamp('2010-05-04 10:15:55')
尝试了很多事情,但我目前仍停留在下面的代码中。
for d in df.column:
pd.to_datetime(df.column[d]).apply(lambda x: x.date())
此外,如何格式化该列,以便可以在如下语句中使用它:
df = df[df.column > 2015-05-28]
答案 0 :(得分:2)
只要添加答案,以防其他人在这里结束:
首先,让我们创建一个包含一些日期的数据框,将dtype更改为字符串并将其转换回。 errors ='ignore'参数将忽略列中的所有非日期时间值,因此,如果在第x行中有John Smith,则按照相同的思路,如果您将errors ='coerce'更改,它将变为John Smith为NaT(不是时间值)
# Create date range with frequency of a day
rng = pd.date_range(start='01/01/18', end ='01/01/19',freq='D')
#pass this into a dataframe
df = pd.DataFrame({'Date' : rng})
print(df.dtypes)
Date datetime64[ns]
#okay lets case this into a str so we can convert it back
df['Date'] = df['Date'].astype(str)
print(df.dtypes)
Date object
# now lets convert it back #
df['Date'] = pd.to_datetime(df.Date,errors='ignore')
print(df.dtypes)
Date datetime64[ns]
# Okay lets slice the data frame for your desired date ##
print(df.loc[df.Date > '2018-12-29'))
Date
363 2018-12-30
364 2018-12-31
365 2019-01-01
答案 1 :(得分:1)
@Datanovice提供的答案:
pd.to_datetime(df['your column'],errors='ignore')
然后检查dtype,它应该是日期时间,如果是,则只需
df.loc[df.['your column'] > 'your-date' ]