2017-08-30 92 views
-2

我有一个数据帧dfpandas这样的:不能重新索引大熊猫据帧与所需的指标

          signal1 
timestamp          
2017-08-23 21:30:00.012     181643.0 
2017-08-23 21:31:00.002     181635.0 
2017-08-23 21:32:00.003     181630.0 
2017-08-23 21:33:00.006     181611.0 
2017-08-23 21:34:00.002     181644.0 

,我有指标,因为这:

[2017-08-23 14:30:00-07:00, 2017-08-23 14:31:00-07:00, 2017-08-23 14:32:00-07:00, 2017-08-23 14:33:00-07:00, 2017-08-23 14:34:00-07:00, 2017-08-23 14:35:00-07:00] 

现在,如果我重新编制df喜欢这个:

df = df.reindex(indexes) 

输出结果是:

timestamp         signal1 
2017-08-23 14:30:00-07:00      NaN 
2017-08-23 14:31:00-07:00      NaN 
2017-08-23 14:32:00-07:00      NaN 
2017-08-23 14:33:00-07:00      NaN 
2017-08-23 14:34:00-07:00      NaN 
2017-08-23 14:35:00-07:00      NaN 

我所要的输出是:

signal_name         signal1 
2017-08-23 14:30:00-07:00      181643.0 
2017-08-23 14:31:00-07:00      181643.0 
2017-08-23 14:32:00-07:00      181643.0 
2017-08-23 14:33:00-07:00      181643.0 
2017-08-23 14:34:00-07:00      181643.0 
2017-08-23 14:35:00-07:00      NaN 

我没有得到它为什么不重建索引正确。

+1

从[文档](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.html) :“使用可选的填充逻辑将DataFrame修改为新的索引,将NA/NaN放置在前一个索引中没有值的位置。”在给定的时间戳里没有'signal1'的值。 – Evert

+0

看来你想要做的就是重置索引。不是reindex。 –

+0

而'reset_index()'不会做你想做的。索引对象是不可变的。 –

回答

0

什么reindex做是

顺应系列新的索引具有可选的填充逻辑,放置 NA/NaN的在具有先前的指数没有值的位置。

表示您之前的索引中没有2017-08-23 14:30:00-07:00,所以它是NaN。 它你有2017-08-23 21:30:00.012或其他来源索引,它会改变你的数据和索引的映射。

Index是不可变的对象。

不变的ndarray实现一个有序的可切片集合。基本 对象存储轴标签的所有大熊猫对象

,所以你需要创建一个新的实例与您的新的索引和来源的数据。

Series(data=origin_data, index=new_index)

Dataframe(data=origin_data, index=new_index)