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

Afo*_*o B 9 python datetime date pandas

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

有什么建议?

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

rri*_*ter 19

比上面简单得多:

df['mydates'].dt.date
Run Code Online (Sandbox Code Playgroud)


Afo*_*o B 18

我得到了一位同事的帮助.

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

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


Sax*_*smu 16

对我来说这有效:

from datetime import datetime
df[ts] = [datetime.fromtimestamp(x) for x in df[ts]]
Run Code Online (Sandbox Code Playgroud)


Geo*_*pis 14

你必须知道Unix时间戳的单位是秒还是毫秒。假设以秒为单位,并假设你有以下 pandas

print(df.head())
Run Code Online (Sandbox Code Playgroud)

你得到:

     timestamp XETHZUSD
0  1609459200   730.85
1  1609545600   775.01
2  1609632000   979.86
3  1609718400  1042.52
4  1609804800  1103.41
Run Code Online (Sandbox Code Playgroud)

您可以将时间戳转换为日期时间,如下所示:

df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')

print(df.head())
Run Code Online (Sandbox Code Playgroud)

我们得到:

   timestamp XETHZUSD
0 2021-01-01   730.85
1 2021-01-02   775.01
2 2021-01-03   979.86
3 2021-01-04  1042.52
4 2021-01-05  1103.41
Run Code Online (Sandbox Code Playgroud)

如果 Unix 时间戳以毫秒为单位,那么您应该输入

df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
Run Code Online (Sandbox Code Playgroud)

  • 这部分代码工作得很好 df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms') 简单的解决方案,一行即可编写。 (2认同)

cod*_*tty 6

另一个问题被标记为指向此问题的欺骗,但它不包括这个答案,这似乎是最直接的(也许在发布/回答此问题时此方法还不存在):

pandas 文档展示了一种pandas.Timestamp.to_pydatetime“将 Timestamp 对象转换为原生 Python 日期时间对象”的方法。