如何使用小时

时间:2016-07-05 19:11:11

标签: python pandas indexing dataframe

所以,这已经得到了一定程度的回答,除了它对小时标记更具挑战性,我一直遇到试图返回日期时间的问题。所以,基本上我有一个如下所示的数据框:

                     elev  Dewpoint Temp
time                                      
2014-06-28 12:13:33  1125.0       7.222222
2014-06-28 12:28:33  1125.0       7.222222
2014-06-28 12:43:33  1125.0       7.222222
2014-06-28 12:58:33  1125.0       7.222222
2014-06-28 13:13:33  1125.0       6.666667
2014-06-28 13:28:33  1125.0       6.666667
2014-06-28 13:43:33  1125.0       7.222222
2014-06-28 13:58:33  1125.0       7.222222
2014-06-28 14:13:33  1125.0       6.666667
...
2014-08-31 11:02:14  1125.0      10.555556
2014-08-31 11:17:13  1125.0      11.111111
2014-08-31 11:17:14  1125.0      10.555556
2014-08-31 11:32:13  1125.0      10.555556
2014-08-31 11:47:13  1125.0      10.000000
2014-08-31 11:47:14  1125.0      10.000000

我希望这个时间以小时为单位递增,以便我可以将它与一些仅按小时测量数据的理论数据进行比较。

我尝试使用以下代码来解决我的困境:

dftemp01=df00.resample(rule='1H',closed='left').last().reset_index().fillna(method='ffill')
dftemp02=df00.resample(rule='1H',closed='left').first().reset_index().fillna(method='ffill')
dt0=dftemp01.datetime-dftemp02.datetime
df00['Observed']=dftemp01+dt0*dftemp02

其中df00是上面的数据帧。我稍后将其余的数据帧丢弃,这很好。但是,我遇到了两个问题。

1)我认为这不是我想要的。我特别想要的是例如小时13:00,在12:58接受点,然后线性地向前移动2分钟,沿着由前一点减去的下一点确定的线除以之间的时间间隔。 2。

2)我没有收到dftemp01.datetime的任何回复。我尝试了dftemp01.date_time和其他迭代,以及dftemp01.index.to_pydatetime()。这些都没有用。

1 个答案:

答案 0 :(得分:0)

所以,经过一番尝试,我解决了这个问题。这不是最漂亮的编码,但无论采样时间如何,它都可以解决采样问题,使采样反映(根据所知的最佳信息)您的数据应该是什么样的:

lfile00=path0+dewpointstring+filetype0
df00=xselect(lfile00,v00,starttime,endtime)
df00[v00]=((df00[v00]-32.)*5./9.)
dsll=xr.open_dataset(lfile00)
dftemp0=df00[v00].resample('S').mean()
dftemp0=dftemp0.interpolate()
df00=df00.resample('H').mean()
df00['Observed']=dftemp0.resample('H').mean()
df00=df00.drop(['elev',v00],1)

警告;但是,如果您的数据帧很大,(比如几个月以上),1秒间隔的内插和重采样最终可能会让您对数据大小感到头疼。我不知道如何解决这个问题。谢天谢地,我的数据不需要它。如果有人对如何解决这个问题感兴趣,我可以尝试在未来几周内找到一种方法。