gpt4 book ai didi

python - 转换 Pandas 数据框中的日期/时间列

转载 作者:太空狗 更新时间:2023-10-30 01:12:55 26 4
gpt4 key购买 nike

我的数据集在各个列中包含日期(儒略日,第 1 列)、小时(HHMM,第 2 列)和秒(第 3 列):

1  253  2300   0    2.9  114.4  18.42  21.17
1 253 2300 10 3.27 111.2 18.48 21.12
1 253 2300 20 3.22 111.3 18.49 21.09
1 253 2300 30 3.84 106.4 18.52 21
1 253 2300 40 3.75 104.4 18.53 20.85

我正在使用 Pandas 读取文本文件:

columns = ['station','julian_day','hours','seconds','U','Ud','T','RH']
df = pd.read_table(file_name, header=None, names=columns, delim_whitespace=True)

现在我想将日期转换为更方便的日期,例如 YYYY-MM-DD HH:MM:SS(数据集中未提供年份,但已固定2001 年)。

我尝试使用 parse_dates 将三列合并为一列:

df = pd.read_table(file_name, header=None, names=columns, delim_whitespace=True, 
parse_dates={'datetime' : ['julian_day','hours','seconds']})

将三列转换为一个字符串:

In [38]: df['datetime'][0]
Out[38]: '253 2300 0'

我接下来尝试使用 date_parser 转换它们;以下 this post使用类似的东西:

date_parser = lambda x: datetime.datetime.strptime(x, '%j %H%M %s')

date_parser 本身可以工作,但我无法将它与 read_table 结合使用,我几乎被困在了这一点上。有没有简单的方法来实现转换?

完整的最小(不太)工作示例:

import pandas as pd
import datetime
from io import StringIO

data_file = StringIO("""\
1 253 2300 0 2.9 114.4 18.42 21.17
1 253 2300 10 3.27 111.2 18.48 21.12
1 253 2300 20 3.22 111.3 18.49 21.09
1 253 2300 30 3.84 106.4 18.52 21
1 253 2300 40 3.75 104.4 18.53 20.85
""")

date_parser = lambda x: datetime.datetime.strptime(x, '%j %H%M %S')

columns = ['station','julian_day','hours','seconds','U','Ud','T','RH']
df = pd.read_table(data_file, header=None, names=columns, delim_whitespace=True,\
parse_dates={'datetime' : ['julian_day','hours','seconds']})

最佳答案

不确定我是否遗漏了什么,但这似乎有效:

import pandas as pd
import datetime
from io import StringIO

data_file = StringIO("""\
1 253 2300 0 2.9 114.4 18.42 21.17
1 253 2300 10 3.27 111.2 18.48 21.12
1 253 2300 20 3.22 111.3 18.49 21.09
1 253 2300 30 3.84 106.4 18.52 21
1 253 2300 40 3.75 104.4 18.53 20.85
""")

date_parser = lambda x: datetime.datetime.strptime(("2001 " + x), '%Y %j %H%M %S')

columns = ['station','julian_day','hours','seconds','U','Ud','T','RH']
df = pd.read_table(data_file, header=None, names=columns, delim_whitespace=True,\
date_parser = date_parser,parse_dates={'datetime' : ['julian_day','hours','seconds']})

我只是在 read_table 中添加了 date_parser 参数,并在解析函数中硬编码了 2001

关于python - 转换 Pandas 数据框中的日期/时间列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39288013/

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