如何在pandas dataframe中将timestamp转换为datetime.date?

时间:2017-01-21 18:36:11

标签: python date datetime pandas

我需要在日期上合并2个pandas数据帧,但它们目前有不同的日期类型。 1是时间戳(从excel导入),另一个是datetime.date

有什么建议吗?

我已尝试pd.to_datetime().date,但这仅适用于单个项目(例如df.ix[0,0]),它不会让我申请整个系列(例如df['mydates'])或数据帧。

7 个答案:

答案 0 :(得分:13)

我从一位同事那里得到了一些帮助。

这似乎解决了上面发布的问题

pd.to_datetime(df['mydates']).apply(lambda x: x.date())

答案 1 :(得分:10)

比上面简单得多:

df['mydates'].dt.date

答案 2 :(得分:5)

对我来说这可行:

from datetime import datetime
df[ts] = [datetime.fromtimestamp(x) for x in df[ts]]

答案 3 :(得分:1)

另一个问题被标记为指向此问题,但它不包含此答案,这似乎是最简单的方法(也许在发布/回答此问题时此方法尚不存在):

pandas文档显示了一种pandas.Timestamp.to_pydatetime方法,用于“将Timestamp对象转换为本地Python datetime对象”。

答案 4 :(得分:0)

如果您需要datetime.date个对象...,请使用.date

Timestamp属性了解它们
pd.to_datetime(df['mydates']).date

答案 5 :(得分:0)

当我遇到类似问题时,我发现以下方法最有效。例如,数据框df在列ts中具有一系列时间戳。

df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())

进行转换,您可以省略.date()后缀的日期时间。然后更改数据框上的列。像这样...

df.loc[:, 'ts'] = df.ts.apply(lambda x: pd.datetime.fromtimestamp(x).date())

答案 6 :(得分:0)

假设时间列采用时间戳整数毫秒格式

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