使用pandas对python列表重新采样

使用pandas对python列表重新采样,python,pandas,resampling,Python,Pandas,Resampling,这里对蟒蛇和熊猫来说是相当陌生的 我做了一个查询,返回了一个timeseries。我从不确定从查询中收到多少数据点(运行一天),但我知道的是,我需要对它们重新采样,以包含24个点(一天中每小时一个) 打印m3hstream提供 [(1479218009000L, 109), (1479287368000L, 84)] 然后我尝试使用 df = pd.DataFrame(data = list(m3hstream), columns=['Timestamp', 'Value']) 这给了我一个

这里对蟒蛇和熊猫来说是相当陌生的

我做了一个查询,返回了一个timeseries。我从不确定从查询中收到多少数据点(运行一天),但我知道的是,我需要对它们重新采样,以包含24个点(一天中每小时一个)

打印m3hstream提供

[(1479218009000L, 109), (1479287368000L, 84)]
然后我尝试使用

df = pd.DataFrame(data = list(m3hstream), columns=['Timestamp', 'Value'])
这给了我一个

          Timestamp  Value
       0  1479218009000    109
       1  1479287368000     84
接下来我做这个

 daily_summary = pd.DataFrame()
 daily_summary['value'] = df['Value'].resample('H').mean()
 daily_summary = daily_summary.truncate(before=start, after=end)
 print "Now daily summary"
 print daily_summary
但这给了我一个类型错误:仅对DatetimeIndex、TimedeltaIndex或PeriodIndex有效,但得到了一个“RangeIndex”实例

谁能告诉我如何重新取样,这样我在查询的24小时内每小时有1分

谢谢。

让我们试试:

daily_summary = daily_summary.set_index('Timestamp')

daily_summary.index = pd.to_datetime(daily_summary.index, unit='ms')
每小时一次:

daily_summary.resample('H').mean()
或者一天一次:

daily_summary.resample('D').mean()
  • 您需要做的第一件事是将
    'Timestamp'
    转换为实际的
    pd.Timestamp
    。看起来是
    毫秒
  • 然后
    重新采样
    ,将
    打开
    参数设置为
    “时间戳”

如果要填充那些
NaN
值,请使用
ffill
bfill
插值

df.assign(
    Timestamp=pd.to_datetime(df.Timestamp, unit='ms')
).resample('H', on='Timestamp').mean().reset_index().interpolate()

             Timestamp   Value
0  2016-11-15 13:00:00  109.00
1  2016-11-15 14:00:00  107.75
2  2016-11-15 15:00:00  106.50
3  2016-11-15 16:00:00  105.25
4  2016-11-15 17:00:00  104.00
5  2016-11-15 18:00:00  102.75
6  2016-11-15 19:00:00  101.50
7  2016-11-15 20:00:00  100.25
8  2016-11-15 21:00:00   99.00
9  2016-11-15 22:00:00   97.75
10 2016-11-15 23:00:00   96.50
11 2016-11-16 00:00:00   95.25
12 2016-11-16 01:00:00   94.00
13 2016-11-16 02:00:00   92.75
14 2016-11-16 03:00:00   91.50
15 2016-11-16 04:00:00   90.25
16 2016-11-16 05:00:00   89.00
17 2016-11-16 06:00:00   87.75
18 2016-11-16 07:00:00   86.50
19 2016-11-16 08:00:00   85.25
20 2016-11-16 09:00:00   84.00

这是输出:值时间戳1970-01-01 00:24:39.218009 109 1970-01-01 00:24:39.28736884@little.toblerone在to_DateTime中添加了units='ms',我运行了你的代码,它提供的输出与我在问题中发布的相同。我是不是做错了什么?如果你没有得到我发布的信息,那就有问题了。你在哪里运行这个?在iPython/Jupyter笔记本中?伊皮顿?控制台?,控制台。我使用的是PyCharm IDE,这是控制台中的打印输出。您是否运行这个,然后再打印
df
?或者您是否将其重新分配给
df
,然后打印
df
?基本上是您的代码后跟打印df。但这是用同样的方法。所以我认为这两种选择中的后一种。
df.assign(
    Timestamp=pd.to_datetime(df.Timestamp, unit='ms')
).resample('H', on='Timestamp').mean().reset_index().interpolate()

             Timestamp   Value
0  2016-11-15 13:00:00  109.00
1  2016-11-15 14:00:00  107.75
2  2016-11-15 15:00:00  106.50
3  2016-11-15 16:00:00  105.25
4  2016-11-15 17:00:00  104.00
5  2016-11-15 18:00:00  102.75
6  2016-11-15 19:00:00  101.50
7  2016-11-15 20:00:00  100.25
8  2016-11-15 21:00:00   99.00
9  2016-11-15 22:00:00   97.75
10 2016-11-15 23:00:00   96.50
11 2016-11-16 00:00:00   95.25
12 2016-11-16 01:00:00   94.00
13 2016-11-16 02:00:00   92.75
14 2016-11-16 03:00:00   91.50
15 2016-11-16 04:00:00   90.25
16 2016-11-16 05:00:00   89.00
17 2016-11-16 06:00:00   87.75
18 2016-11-16 07:00:00   86.50
19 2016-11-16 08:00:00   85.25
20 2016-11-16 09:00:00   84.00