KeyError:将列中的日期转换为日期时的时间戳记

时间:2019-01-22 13:59:17

标签: python pandas dataframe

尝试将完整列的日期(类型=日期时间)转换为日期,以便以后在某种情况下使用。不断出现以下错误:

  

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]

2 个答案:

答案 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' ]