python pandas 将 UTC 整数转换为日期时间

发布于 2025-01-10 15:57:24 字数 414 浏览 0 评论 0原文

我正在从 API 调用一些财务数据,该 API 将时间值存储为(我认为)UTC(下面的示例):

在此处输入图像描述

我似乎无法将整个列转换为可用日期,我可以使用以下代码为单个值执行此操作,所以我知道这是可行的,但我有 1000 行存在此问题和思想pandas 将提供一种更简单的方法来更新所有值。

from datetime import datetime
tx = int('1645804609719')/1000
print(datetime.utcfromtimestamp(tx).strftime('%Y-%m-%d %H:%M:%S'))

任何帮助将不胜感激。

I am calling some financial data from an API which is storing the time values as (I think) UTC (example below):

enter image description here

I cannot seem to convert the entire column into a useable date, I can do it for a single value using the following code so I know this works, but I have 1000's of rows with this problem and thought pandas would offer an easier way to update all the values.

from datetime import datetime
tx = int('1645804609719')/1000
print(datetime.utcfromtimestamp(tx).strftime('%Y-%m-%d %H:%M:%S'))

Any help would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

十年不长 2025-01-17 15:57:24

您可以使用“to_numeric”将列转换为整数,“div”将其除以1000,最后使用循环来使用datetime<迭代数据帧列/strong> 获取您想要的格式。

import pandas as pd
import datetime

df = pd.DataFrame({'date': ['1584199972000', '1645804609719'], 'values': [30,40]})
df['date'] = pd.to_numeric(df['date']).div(1000)
for i in range(len(df)):
    df.iloc[i,0] = datetime.utcfromtimestamp(df.iloc[i,0]).strftime('%Y-%m-%d %H:%M:%S')
print(df)

输出:

                  date  values
0  2020-03-14 15:32:52      30
1  2022-02-25 15:56:49      40

You can use "to_numeric" to convert the column in integers, "div" to divide it by 1000 and finally a loop to iterate the dataframe column with datetime to get the format you want.

import pandas as pd
import datetime

df = pd.DataFrame({'date': ['1584199972000', '1645804609719'], 'values': [30,40]})
df['date'] = pd.to_numeric(df['date']).div(1000)
for i in range(len(df)):
    df.iloc[i,0] = datetime.utcfromtimestamp(df.iloc[i,0]).strftime('%Y-%m-%d %H:%M:%S')
print(df)

Output:

                  date  values
0  2020-03-14 15:32:52      30
1  2022-02-25 15:56:49      40
终陌 2025-01-17 15:57:24

只需使用 pandas.DataFrame.apply

df['date'] = df.date.apply(lambda x: datetime.utcfromtimestamp(int(x)/1000).strftime('%Y-%m-%d %H:%M:%S'))

另一种方法是使用 pd.to_datetime 正如 Panagiotos 在评论中推荐的:

df['date'] = pd.to_datetime(df['date'],unit='ms')

Simply use pandas.DataFrame.apply:

df['date'] = df.date.apply(lambda x: datetime.utcfromtimestamp(int(x)/1000).strftime('%Y-%m-%d %H:%M:%S'))

Another way to do it is by using pd.to_datetime as recommended by Panagiotos in the comments:

df['date'] = pd.to_datetime(df['date'],unit='ms')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文