Python 如何在数据帧中将时间戳转换为datetime.date?
我需要在日期上将两个数据框合并在一起,但它们当前有不同的日期类型。1是时间戳(从excel导入),另一个是Python 如何在数据帧中将时间戳转换为datetime.date?,python,date,datetime,pandas,Python,Date,Datetime,Pandas,我需要在日期上将两个数据框合并在一起,但它们当前有不同的日期类型。1是时间戳(从excel导入),另一个是datetime.date 有什么建议吗 我已经尝试了pd.to_datetime().date,但这只适用于单个项目(例如df.ix[0,0]),它不允许我应用于整个系列(例如df['mydates'])或数据框。如果需要datetime.date对象。。。然后使用时间戳的.date属性让他们完成 pd.to_datetime(df['mydates']).date 我从一位同事那里得到
datetime.date
有什么建议吗
我已经尝试了
pd.to_datetime().date
,但这只适用于单个项目(例如df.ix[0,0]
),它不允许我应用于整个系列(例如df['mydates']
)或数据框。如果需要datetime.date
对象。。。然后使用时间戳的.date
属性让他们完成
pd.to_datetime(df['mydates']).date
我从一位同事那里得到了一些帮助
这似乎解决了上述问题
pd.to_datetime(df['mydates']).apply(lambda x:x.date())
另一个问题被标记为dupe,指向这个问题,但它没有包括这个答案,这似乎是最简单的答案(在发布/回答这个问题时可能还不存在这个方法):
pandas文档展示了一种“将时间戳对象转换为本机Python datetime对象”的方法。当我遇到类似问题时,我发现以下方法最有效。例如,使用数据帧df
,在列ts
中有一系列时间映射
df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())
这样就可以进行转换,您可以省去datetimes的.date()
后缀。然后更改数据帧上的列。就像这样
df.loc[:, 'ts'] = df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())
对我来说,这很有效:
from datetime import datetime
df[ts] = [datetime.fromtimestamp(x) for x in df[ts]]
比上面简单得多:
df['mydates'].dt.date
假设时间列为时间戳整数毫秒格式
1天=86400000毫秒
给你:
day_divider = 86400000
df['time'] = df['time'].values.astype(dtype='datetime64[ms]') # for msec format
df['time'] = (df['time']/day_divider).values.astype(dtype='datetime64[D]') # for day format
pd.to_datetime(df['mydates'])Hi@piRSquared。不幸的是,这不起作用。pd.todatetime(df['my_dates'])在我访问系列中的1个元素时仍然返回pandas.tslib.Timestamp(例如,如果我将其保存为一个新的数据帧作为df2,类型(df2.ix[0,0]),并且我需要它是datetime.date,这似乎也不起作用。然而,如果输入是一个包含一行的序列,s.date.date()
对我有效。pd.to\u datetime(df['mydates'])apply(lambda x:x.date())
这应该有效