如何让pandas datatimeindex成为每日两次的频率?

时间:2017-05-26 08:59:18

标签: pandas time-series datetimeindex

我有一只看起来像这样的熊猫df:

           Open_fut  Close_fut
Date                           
2017-05-12   20873.0    20850.0
2017-05-11   20887.0    20869.0
2017-05-10   20891.0    20888.0
2017-05-09   20943.0    20886.0
2017-05-08   21001.0    20943.0

我的日期为datetime64[ns],其他列为float64

如何制作我的时间序列,以便Open_fut 2017-05-12 09:30:00Close_fut 2017-05-12 15:30:00等等每天都来?

修改

理想情况下,新的df看起来像这样:

                    fut  
Date                           
2017-05-12 09:30:00 20873.0
2017-05-12 15:30:00 20850.0
.
.

1 个答案:

答案 0 :(得分:3)

MultiIndex.from_arraysto_timedelta添加times时似乎需要lreshape

time1 = '09:30:00'
time2 = '15:30:00'

df.index = pd.MultiIndex.from_arrays([df.index + pd.to_timedelta(time1),
                                      df.index + pd.to_timedelta(time2)],
                                      names=['date1','date2'])
print (df)
                                         Open_fut  Close_fut
date1               date2                                   
2017-05-12 09:30:00 2017-05-12 15:30:00   20873.0    20850.0
2017-05-11 09:30:00 2017-05-11 15:30:00   20887.0    20869.0
2017-05-10 09:30:00 2017-05-10 15:30:00   20891.0    20888.0
2017-05-09 09:30:00 2017-05-09 15:30:00   20943.0    20886.0
2017-05-08 09:30:00 2017-05-08 15:30:00   21001.0    20943.0

对于您的输出解决方案类似,仅使用set_index进行重塑+ sort_index + lreshape

time1 = '09:30:00'
time2 = '15:30:00'

df['date1'] = df.index + pd.to_timedelta(time1)
df['date2'] = df.index + pd.to_timedelta(time2)                                   
df = pd.lreshape(df, {'date':['date1', 'date2'], 'fut':['Open_fut', 'Close_fut']}) 
df = df.set_index('date').sort_index()             
print (df)
                         fut
date                        
2017-05-08 09:30:00  21001.0
2017-05-08 15:30:00  20943.0
2017-05-09 09:30:00  20943.0
2017-05-09 15:30:00  20886.0
2017-05-10 09:30:00  20891.0
2017-05-10 15:30:00  20888.0
2017-05-11 09:30:00  20887.0
2017-05-11 15:30:00  20869.0
2017-05-12 09:30:00  20873.0
2017-05-12 15:30:00  20850.0

编辑:

with pd.wide_to_long too现在没有记录,但将来可能会删除(underlying_type_t)。

可能的解决方案是将所有3个函数合并为一个 - 也许melt,但现在它没有实现。也许在一些新版本的熊猫中。然后我的答案会更新。