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

2024-04-27 00:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试将完整列的日期(type=datetime)转换为以后在条件中使用的日期。以下错误不断出现:

KeyError: Timestamp('2010-05-04 10:15:55')

尝试了多种方法,但我目前仍坚持下面的代码。在

for d in df.column:
    pd.to_datetime(df.column[d]).apply(lambda x: x.date())

另外,如何格式化列以便在语句中使用它,如下所示:

^{pr2}$

Tags: to方法代码indffordatetimetype
2条回答

@datanawner给出的答案是:

pd.to_datetime(df['your column'],errors='ignore') 

然后检查数据类型它应该是一个日期时间,如果是的话,就这么做

^{pr2}$

只需添加一个答案以防其他人在这里结束:

首先,让我们创建一个带有日期的数据帧,将数据类型更改为一个字符串并将其转换回来。errors='ignore'参数将忽略列中的任何非日期时间值,因此,如果第x行中有John Smith,那么它将保持不变,如果更改errors='force',它将把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

相关问题 更多 >