pandas 时间序列拆分日期时间数据类型以分隔日期列和时间列

cetgtptt  于 2022-12-10  发布在  其他
关注(0)|答案(1)|浏览(163)

我要导入的CSV文件包含未格式化的数据集,日期和时间是分开的,但数据类型是对象,并且时间的时区不正确。
此原始数据集的时区为EET,目前与东部标准时间相差7小时(有时在夏令时期间为6小时)
我尝试将对象转换为日期时间格式,并将时区转换为东部标准时间,使日期和时间位于单独的列中。
我的代码片段如下:

将日期列转换为日期时间格式

df['date'] = pd.to_datetime(df['date'])

上面的代码成功地将date列转换为datetime数据类型great。
我的问题是当我和时间专栏一起工作的时候。
我无法使用.split()分隔日期和时间,
时区不准确,所以我使用不同的时区来补偿,以说明我正在寻找的-7小时(我们/山似乎产生了我需要的-7小时)

将时间列转换为日期时间数据类型

df["time"] = pd.to_datetime(
df["time"],
infer_datetime_format = True
)

将时间列转换为美国/东部时区

df["time"] = df["time"].dt.tz_localize("US/Mountain")

结果,输出为:2022年12月3日23时55分至7时
我正在寻找一个输出16:55或甚至16:55:00是罚款以及。
我的问题是,在日期时间格式中,如何将时间与日期分开,并减去-7:00,以便输出为16:55(或16:55:00)
我已尝试使用:

df['time'].to_datetime().strftime('%h-%m')

并收到以下错误:
第一个
提供以下输出
第一个
返回原始时间'23:55:00'
需要说明的是,我查找的只是转换时间的输出,例如16:55。我不需要23:55:00-07:00
我正在寻找一个日期时间的输出拆分到正确时区的单独列
例如:

date |                time
------               ------
2022-12-02 |          16:55
n8ghc7c1

n8ghc7c11#

样品:

data = {
    "date": ["2022-12-02"],
    "time": ["23:55:00"]
}
df = pd.DataFrame(data)

密码:

df["datetime"] = (
    pd.to_datetime(df["date"].str.cat(df["time"], sep=" "))
    .dt.tz_localize("UTC")
    .dt.tz_convert("US/Mountain")
    .dt.tz_localize(None)
)
df["date"], df["time"] = zip(*[(x.date(), x.time()) for x in df.pop("datetime")])
print(df)

输出:

date      time
0  2022-12-02  16:55:00

相关问题