Python 如何转换此表';s';有效';去熊猫的约会和时间?
我有一个包含METAR(天气)数据的txt文件。该数据以不均匀的间隔记录。我正在尝试使用matplotlib根据这些数据制作一些图表。我认为要做到这一点,我需要使用txt文件的“有效”时间(UTC)。那么,我将如何按照有效时间对pandas数据帧进行索引,并使其识别为UTC中的日期和时间呢 我尝试过按日期解析,但我认为这不是正确的方法Python 如何转换此表';s';有效';去熊猫的约会和时间?,python,pandas,Python,Pandas,我有一个包含METAR(天气)数据的txt文件。该数据以不均匀的间隔记录。我正在尝试使用matplotlib根据这些数据制作一些图表。我认为要做到这一点,我需要使用txt文件的“有效”时间(UTC)。那么,我将如何按照有效时间对pandas数据帧进行索引,并使其识别为UTC中的日期和时间呢 我尝试过按日期解析,但我认为这不是正确的方法 KORD = pd.read_table('ORD.txt',parse_dates=['valid'], delimiter=',', index_col=1)
KORD = pd.read_table('ORD.txt',parse_dates=['valid'], delimiter=',', index_col=1)
ORD.txt看起来像:
我有一个数据框,其中索引是按日期,但我不确定它是按UTC的日期和时间
输出如下所示:
希望我正确地理解了你的问题。您可以读取数据并使用默认的datatime转换
import pandas as pd
data = pd.read_csv("datalake/ORD.txt", sep=',')
data["valid"] = pd.to_datetime(data.valid, errors='coerce')
data = data.dropna(subset=["valid"])
data = data.set_index("valid")
有效列的输出:
data.index
DatetimeIndex(['2011-01-30 00:51:00', '2011-01-30 00:00:00'], dtype='datetime64[ns]' ...
因此,默认情况下,它会将每行转换为datetime 64格式。希望我正确理解了您的问题。您可以读取数据并使用默认的datatime转换
import pandas as pd
data = pd.read_csv("datalake/ORD.txt", sep=',')
data["valid"] = pd.to_datetime(data.valid, errors='coerce')
data = data.dropna(subset=["valid"])
data = data.set_index("valid")
有效列的输出:
data.index
DatetimeIndex(['2011-01-30 00:51:00', '2011-01-30 00:00:00'], dtype='datetime64[ns]' ...
因此,默认情况下,它会将每行转换为datetime 64格式。我认为
valid
列已经在UTC中,因此不需要转换它
查看您提供的源行。
它包含2011-01-30 00:51
asvalid
列
然后查看METAR数据的开头:KORD 300051Z
KORD
是机场代码,300051Z
包含:
-月日30
-小时和分钟0051
-祖鲁Z
valid
列和METAR数据段中的小时/分钟部分
如上所述,它们是相等的
请注意代码示例中的parse_dates=['valid']
和index_col=1
他们的意思是:
列应转换为DateTime(因此类型正确)valid
- 第1列(计算从0开始,因此有问题的列
是否
)应为索引列有效
- 第一行(station,tmpf,…)包含“常规”列的名称
- 下一行只包含
——索引列的名称valid
valid
列已经在UTC中,因此不需要转换它
查看您提供的源行。
它包含2011-01-30 00:51
asvalid
列
然后查看METAR数据的开头:KORD 300051Z
KORD
是机场代码,300051Z
包含:
-月日30
-小时和分钟0051
-祖鲁Z
valid
列和METAR数据段中的小时/分钟部分
如上所述,它们是相等的
请注意代码示例中的parse_dates=['valid']
和index_col=1
他们的意思是:
列应转换为DateTime(因此类型正确)valid
- 第1列(计算从0开始,因此有问题的列
是否
)应为索引列有效
- 第一行(station,tmpf,…)包含“常规”列的名称
- 下一行只包含
——索引列的名称valid
数据。set_index(pd.DatetimeIndex(数据['valid']))
并从实际数据帧中删除该列。但这肯定不应该是任何导入问题。我在运行DatetimeIndex时出错([…说名称DatetimeIndex未定义。是否有我没有导入的内容或我调用了错误的内容?嗨,尝试将索引设置为数据。set_index(pd.DatetimeIndex(data['valid'))
并从实际数据帧中删除该列。但它肯定不应该是任何导入问题。