python – Pandas – 在索引中使用merge_asof函数
发布时间:2020-12-20 12:00:10 所属栏目:Python 来源:网络整理
导读:代码是: import numpy as np import pandas as pddateparse = lambda x: pd.datetime.strptime(x,'%d %m %Y %H %M')vento = pd.read_csv('dados_tpm.txt',header=0,delim_whitespace= True,parse_dates = [['Dia','Mes','Ano','Hora','Minuto']],index_col
代码是:
import numpy as np import pandas as pd dateparse = lambda x: pd.datetime.strptime(x,'%d %m %Y %H %M') vento = pd.read_csv('dados_tpm.txt',header=0,delim_whitespace= True,parse_dates = [['Dia','Mes','Ano','Hora','Minuto']],index_col = False,date_parser = dateparse) vento1 = vento.rename(columns={'Dia_Mes_Ano_Hora_Minuto': 'Data'}) vento0 = vento1.set_index('Data') vento_time = pd.DataFrame({'Data':pd.date_range(start='2016-07-12 18:00:00',end='2017-02-28 21:00:00',freq='3H')}) vento_time0 = vento_time.set_index('Data') vento_2 = pd.merge_asof(vento_time0,vento0,on='Index',tolerance=pd.Timedelta("5 minutes")).fillna('NAN') 那里的vento0是这样的: Index Vel Dir 2016-07-12 16:17:00 9.8 13.8 2016-07-12 16:18:00 10.9 1.8 2016-07-12 16:19:00 10.0 11.1 2016-07-12 16:20:00 11.0 11.0 ... ... ... ... ... ... 2017-02-28 22:34:00 9.2 13.7 而且vento_time0似乎是: Index 2016-07-12 18:00:00 2016-07-12 21:00:00 2016-07-13 00:00:00 2016-07-13 03:00:00 ... ... ... ... 2017-02-28 21:00:00 我的数据有一分钟的间隔,并且它没有正则化.这样做的目的是将其置于3小时间隔内,用五分钟范围内的最近数据替换缺失值.但是当使用merge_asof时,会出现此错误:KeyError:’Index’.我也尝试使用Data,索引的实际名称,但得到相同的错误.预期的产出将是: Index Vel Dir 2016-07-12 18:00:00 8.0 55 2016-07-12 21:00:00 16.0 67 2016-07-13 00:00:00 NAN NAN 2016-07-13 03:00:00 19.0 83 ... ... ... ... 2017-02-28 21:00:00 NAN NAN 有人可以帮忙吗?有没有办法在索引中使用merge_asof函数? 解决方法
做这样的事情:
使用.sort_values(by =’Data’)代替.set_index vento0 = vento1.sort_values(by = 'Data') vento_time0 = vento_time.sort_values(by = 'Data') 完成后,这应该工作: vento_2 = pd.merge_asof(vento_time0, tolerance=pd.Timedelta("5 minutes")).fillna('NAN') 使用以下方法确保“NAN”变为“非数字”: vento_2.convert_objects(convert_numeric =真) 使用merge_asof并转换’NAN’后,您可以设置索引. vento_2.set_index([‘Data’],inplace = True) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |