gpt4 book ai didi

python - Pandas - 将 float 转换为正确的日期时间或时间对象

转载 作者:行者123 更新时间:2023-12-02 08:37:39 31 4
gpt4 key购买 nike

我有一个包含天气信息的观测数据集。每列包含特定字段,其中日期和时间位于两个单独的列中。时间列包含每小时时间,如 0000、0600 .. 最多 2300。我想做的是根据特定时间范围(例如 0000 UTC 到 0600 UTC 之间)过滤数据集。当我尝试读取 pandas 数据框中的数据文件时,默认情况下,时间列以浮点形式读取。当我尝试将其转换为数据时间对象时,它会生成一种我无法转换的格式。代码示例如下:

import pandas as pd
import datetime as dt
df = pd.read_excel("test.xlsx")
df.head()

产生以下结果:

       tdate   itime moonph  speed   ...          qnh  windir maxtemp mintemp
0 01-Jan-17 1000.0 NM7 5 ... $1,011.60 60.0 $32.60 $22.80
1 01-Jan-17 1000.0 NM7 2 ... $1,015.40 999.0 $32.60 $22.80
2 01-Jan-17 1030.0 NM7 4 ... $1,015.10 60.0 $32.60 $22.80
3 01-Jan-17 1100.0 NM7 3 ... $1,014.80 999.0 $32.60 $22.80
4 01-Jan-17 1130.0 NM7 5 ... $1,014.60 270.0 $32.60 $22.80

然后我用以下行提取了时间列:

df["time"] = df.itime

df["time"]

0 1000.0
1 1000.0
2 1030.0
3 1100.0
4 1130.0
5 1200.0
6 1230.0
7 1300.0
8 1330.0
.
.
3261 2130.0
3262 2130.0
3263 600.0
3264 630.0
3265 730.0
3266 800.0
3267 830.0
3268 1900.0
3269 1930.0
3270 2000.0

Name: time, Length: 3279, dtype: float64

然后我尝试将时间列转换为日期时间对象:

df["time"] = pd.to_datetime(df.itime)

产生以下结果:

df["time"]

0 1970-01-01 00:00:00.000001000
1 1970-01-01 00:00:00.000001000
2 1970-01-01 00:00:00.000001030
3 1970-01-01 00:00:00.000001100

看来它已成功将数据转换为日期时间对象。但是,它将小时时间添加到毫秒,这对我来说很难进行过滤。

我想获得的最终数据格式是:

1970-01-01 06:00:00

06:00

感谢任何帮助。

最佳答案

当您读取 Excel 文件时,将 col itimedtype 指定为 str:

df = pd.read_excel("test.xlsx", dtype={'itime':str})

然后你将看到一个字符串时间列,如下所示:

df = pd.DataFrame({'itime':['2300', '0100', '0500', '1000']})

然后指定格式并转换为时间:

df['Time'] = pd.to_datetime(df['itime'], format='%H%M').dt.time

itime Time
0 2300 23:00:00
1 0100 01:00:00
2 0500 05:00:00
3 1000 10:00:00

关于python - Pandas - 将 float 转换为正确的日期时间或时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54313461/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com