Python KeyError:将列中的日期转换为日期时的时间戳
正在尝试将完整列的日期(type=datetime)转换为日期,以便稍后在条件中使用。以下错误不断出现: KeyError:时间戳('2010-05-04 10:15:55') 尝试了多种方法,但我目前仍在使用下面的代码Python KeyError:将列中的日期转换为日期时的时间戳,python,pandas,dataframe,Python,Pandas,Dataframe,正在尝试将完整列的日期(type=datetime)转换为日期,以便稍后在条件中使用。以下错误不断出现: KeyError:时间戳('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-
for d in df.column:
pd.to_datetime(df.column[d]).apply(lambda x: x.date())
此外,如何设置列的格式,以便在语句中使用它,如下所示:
df = df[df.column > 2015-05-28]
@datanoveler提供的答案是:
pd.to_datetime(df['your column'],errors='ignore')
然后检查数据类型,它应该是一个日期时间,如果是,就这样做
df.loc[df.['your column'] > 'your-date' ]
只需添加一个答案,以防其他人出现在这里: 首先,让我们创建一个包含一些日期的数据框,将数据类型更改为字符串并将其转换回。errors='ignore'参数将忽略列中的任何非日期时间值,因此,如果第x行中有John Smith,它将保持不变,同样,如果您更改errors='improve',它将John Smith更改为NaT(不是时间值)
试试这个,pd。要_datetime(df['your column'],errors='ignore'),然后检查数据类型它应该是datetime,如果是这样,只需执行df.loc[df.'your column']>'your date']您还可以通过将参数从errors='ignore'更改为'concure'将列中的非datetime值强制为NaT(不是时间值),谢谢@datanoveler!这就是解决办法!乐意帮忙:)
# 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