如何重新采样数据帧

时间:2017-05-21 15:29:31

标签: python pandas

我有问题,当我重新采样数据帧索引时,日期更改!!。

>>>dpvis=dpvi.Puissance.resample('10min').mean()


>>> dpvi.head()
                     Puissance
Date                          
2016-05-01 00:00:00          0
2016-05-01 00:05:00          0
2016-05-01 00:10:00          0
2016-05-01 00:15:00          0
2016-05-01 00:20:00          0


>>> dpvis.head()
Date
2015-06-14 00:00:00    0.0
2015-06-14 00:10:00    0.0
2015-06-14 00:20:00    0.0
2015-06-14 00:30:00    0.0
2015-06-14 00:40:00    0.0
Freq: 10T, Name: Puissance, dtype: float64


>>>

1 个答案:

答案 0 :(得分:0)

以下是resample()假设您的dtypes正确无误的示例,5min可以正常使用您提供的数据。这不是你问题的答案,但它可以作为一种健全性检查。

首先,以import pandas as pd Date = pd.date_range("2016-05-01", "2016-07-01", freq="5min", name='Date') Puissance = {'Puissance': np.zeros(len(Date), dtype=int)} df = pd.DataFrame(Puissance, index=Date) df.head() Puissance Date 2016-05-01 00:00:00 0 2016-05-01 00:05:00 0 2016-05-01 00:10:00 0 2016-05-01 00:15:00 0 2016-05-01 00:20:00 0 df.shape # (17569, 1) df.index.dtype # datetime64[ns] df.Puissance.dtype # int64 间隔生成两个月的样本数据:

10min

现在重新采样到resampled = df.Puissance.resample('10min').mean() resampled.shape # (8785,) 间隔:

df.resample('10min').mean()

注意:resampled.head() Date 2016-05-01 00:00:00 0 2016-05-01 00:10:00 0 2016-05-01 00:20:00 0 2016-05-01 00:30:00 0 2016-05-01 00:40:00 0 Freq: 10T, Name: Puissance, dtype: int64 resampled.tail() Date 2016-06-30 23:20:00 0 2016-06-30 23:30:00 0 2016-06-30 23:40:00 0 2016-06-30 23:50:00 0 2016-07-01 00:00:00 0 Freq: 10T, Name: Puissance, dtype: int64 也会在此处给出相同的结果。

dtype

重新取样按预期工作 这表明您的head()声明或您的Puissance输出中未显示的观察格式存在问题。

一条线索可能是您的0值以整数(0.0)开头,但重新采样为浮点数(Puissance)。如果您的所有mean值均为零值整数,则dtype输出int64也将为mean(),如上所示。 (dtype通常会返回float64 from tkinter import * def opposite(buttonA): print("running Opposite") if buttonA.get() == 0: buttonB.set(1) elif buttonA.get() == 1: buttonB.set(0) root = Tk() buttonA=IntVar() buttonA.set(1) buttonAchk = Checkbutton(root, variable=buttonA) buttonAchk.pack() buttonAlabel = Label(root, width=30, text="Button A") buttonAlabel.pack() buttonB=IntVar() buttonB.set(0) buttonBCheck = Checkbutton(root, variable=opposite(buttonA)) buttonBCheck.pack() buttonBlabel = Label(root, width=30, text="Button B") buttonBlabel.pack() root.mainloop() ,如果平均值不完全相同。)您的示例数据可能无法代表您尝试解决的实际问题 - 如果所以,请考虑使用更具代表性的示例来更新您的帖子。