使用reset_index时按日期和故障索引数据帧

时间:2014-11-28 11:54:33

标签: python pandas

我有一个数据框来计算测量数量的每日平均值。

  

index_date = pd.Index(t,name =' dates')#t是一个日期时间对象数组

     

df = pd.DataFrame(gas,index_date,columns = [' A'],dtype = float)

     

daily_mean = df.resample(' D',how ='表示')

为了能够绘制数据,我重置索引并创建numpy数组

  

daily_mean.reset_index(就地= TRUE)

     

date = np.array(daily_mean [' date'])

     

表示= np.array(daily_mean [' A'])

我现在的问题是: 时机不正确。 例如,datetime对象datetime.datetime(1979,8,27,10,0)是t中的第一个对象转换为' 1979-08-27T01:00:00.0000 + 0100'在np.array日期。 为什么会发生这种情况以及如何获得正确的时间?

提前感谢任何想法或有用的评论。

2 个答案:

答案 0 :(得分:0)

时间不是'不正确',它只是一个笨拙的特点:numpy在当地时区打印datetime64值

例如,我位于GMT + 01时区:

In [24]: np.datetime64('2014-01-01 00:00:00+00:00')
Out[24]: numpy.datetime64('2014-01-01T01:00:00+0100')

但价值本身并没有改变。您可以通过将其转换回datetime.datetime来查看此内容:

In [26]: np.datetime64('2014-01-01 00:00:00+00:00').item()
Out[26]: datetime.datetime(2014, 1, 1, 0, 0)

In [27]: print np.datetime64('2014-01-01 00:00:00+00:00').item()
2014-01-01 00:00:00

对于绘图部分:您也可以daily_mean['A'].plot()

答案 1 :(得分:0)

您无需将数据转换为numpy数组以进行绘制。只是使用例如。

fig, ax = plt.subplots()
ax.plot(daily_mean.index, daily_mean.values)

plt.show()

为什么在将datetime索引转换为numpy数组时会发生更改,我不知道,但这似乎是一个棘手的问题(Converting between datetime, Timestamp and datetime64)。当您将带有日期的数组放回到数据框中时,它们将再次以正确的形式出现。