pandas 日期列到 unix 时间戳记时区和不同的日期时间格式

问题描述 投票:0回答:1

我有多个数据框,其中日期时间列作为字符串。日期时间格式因数据帧中的列或数据帧而异。我想获得反映本地时区的 unix 时间戳。

例如,一个这样的数据框如下:

import pandas as pd
time_dict = {"datetime": ["2023-08-15T15:32:47.687+00:00", ""]}
test_df = pd.DataFrame(time_dict)

我尝试了一些简单的功能。他们没有在正确的时区生成 Unix 时间戳。当我尝试对时区进行一些更正时,我遇到了 TypeError,指出时区已存在于日期中。

我将在下面提供一种解决方案,但也许有人有更好的解决方案。

python pandas datetime timezone unix-timestamp
1个回答
0
投票

这是我发现可以很好地解决上述问题的解决方案:

import pandas as pd
from datetime import datetime
import tzlocal

def unix_datetime(df, col):
    """
    Convert string datetime to unix datetime format for dataframe column
    It reformats the date to remove existing time zone information that raises a TypeError
    It properly accounts for the timezone.
    df is name of dataframe
    col is the column name as a string
    """
    time_zone = tzlocal.get_localzone_name()
    df[col] = pd.to_datetime(df[col]).dt.strftime("%Y-%m-%d %I:%M:%S %p")
    df[col] = pd.to_datetime(df[col], errors="coerce")
    df[col] = df[col].dt.tz_localize(time_zone).dt.tz_convert(time_zone)
    df[col] = df[col].apply(lambda x: int(x.timestamp() * 1000) if pd.notnull(x) else x)
    
time_dict = {"datetime": ["2023-08-15T15:32:47.687+00:00", ""]}

test_df = pd.DataFrame(time_dict)

test_df = test_df.fillna("").copy()

unix_datetime(test_df, "datetime")
© www.soinside.com 2019 - 2024. All rights reserved.