如何根据城市名称将UTC时间转换为本地时间?

发布于 2025-02-11 21:04:00 字数 220 浏览 1 评论 0原文

我有一个在UTC中有时间的熊猫数据框架。我还有另一列具有时区,我想将其转换为时区,

time, timezone
2022-06-23 01:00:00, Montevideo
2022-05-10 05:00:00, Brasilia
2022-07-16 22:47:00, Casablanca

我想根据时区列中的值将这些行中的每一行转换为各自的本地时间戳

I have a Pandas Dataframe that has time in UTC. I also have another column that has the timezone to which I would like to convert it to

time, timezone
2022-06-23 01:00:00, Montevideo
2022-05-10 05:00:00, Brasilia
2022-07-16 22:47:00, Casablanca

I would like to convert each of these rows into their respective local timestamp based on value in the timezone column

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

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

发布评论

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

评论(1

千年*琉璃梦 2025-02-18 21:04:00

借助 geocoder ,这是这样做的一种方法:

import geocoder
import pandas as pd

df = pd.DataFrame(
    [
        {"utc_time": "2022-06-23 01:00:00", "city": "Montevideo"},
        {"utc_time": "2022-05-10 05:00:00", "city": "Brasilia"},
        {"utc_time": "2022-07-16 22:47:00", "city": "Casablanca"},
    ]
)

# Setup
df["utc_time"] = pd.to_datetime(df["utc_time"], format="%Y-%m-%d %H:%M:%S", utc=True)

# Find time zones
df["timezone"] = df["city"].apply(
    lambda x: geocoder.geocodefarm(x).geojson["features"][0]["properties"]["raw"][
        "LOCATION_DETAILS"
    ]["timezone_short"]
)

# Get local time
df["local_time"] = df.apply(
    lambda x: x["utc_time"].tz_convert(tz=x["timezone"]), axis=1
)
                   utc_time        city            timezone                 local_time
0 2022-06-23 01:00:00+00:00  Montevideo  America/Montevideo  2022-06-22 22:00:00-03:00
1 2022-05-10 05:00:00+00:00    Brasilia   America/Sao_Paulo  2022-05-10 02:00:00-03:00
2 2022-07-16 22:47:00+00:00  Casablanca   Africa/Casablanca  2022-07-16 23:47:00+01:00

With the help of Geocoder, here is one way to do it:

import geocoder
import pandas as pd

df = pd.DataFrame(
    [
        {"utc_time": "2022-06-23 01:00:00", "city": "Montevideo"},
        {"utc_time": "2022-05-10 05:00:00", "city": "Brasilia"},
        {"utc_time": "2022-07-16 22:47:00", "city": "Casablanca"},
    ]
)

# Setup
df["utc_time"] = pd.to_datetime(df["utc_time"], format="%Y-%m-%d %H:%M:%S", utc=True)

# Find time zones
df["timezone"] = df["city"].apply(
    lambda x: geocoder.geocodefarm(x).geojson["features"][0]["properties"]["raw"][
        "LOCATION_DETAILS"
    ]["timezone_short"]
)

# Get local time
df["local_time"] = df.apply(
    lambda x: x["utc_time"].tz_convert(tz=x["timezone"]), axis=1
)
                   utc_time        city            timezone                 local_time
0 2022-06-23 01:00:00+00:00  Montevideo  America/Montevideo  2022-06-22 22:00:00-03:00
1 2022-05-10 05:00:00+00:00    Brasilia   America/Sao_Paulo  2022-05-10 02:00:00-03:00
2 2022-07-16 22:47:00+00:00  Casablanca   Africa/Casablanca  2022-07-16 23:47:00+01:00
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文