【发布时间】:2016-08-10 10:12:17
【问题描述】:
我是 pandas 和 numpy 的新手,我正在尝试将测量值聚合到等间隔的时间序列中。输入数据不是等间距的,看起来像:
timestamp value
2016-08-09 11:55:26 1779.510
2016-08-09 11:55:26 1792.310
2016-08-09 11:55:27 1796.900
2016-08-09 11:55:28 1749.760
2016-08-09 11:55:29 1780.870
... ...
现在我正在尝试从 MySQL 读取数据,然后将其重新采样为等间隔的时间序列。
query = "SELECT timestamp, value FROM iren2.data WHERE data.timestamp >= now() - INTERVAL {0} DAY " \
"AND data_node_id = {1} ".format(1, 307)
data = pandas.read_sql_query(query, engine, parse_dates=True, index_col='timestamp')
aggregation = pandas.DataFrame()
aggregation['value'] = data.resample('1min').mean()
print(aggregation)
打印:
[104301 rows x 1 columns]
value
0 NaN
1 NaN
... ...
这不是我所期望的:/
提前致谢!
更新 EdChum 的评论
data.info():
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 106661 entries, 2016-08-09 13:06:13 to 2016-08-10 13:06:13
Data columns (total 1 columns):
value 106661 non-null float64
dtypes: float64(1)
memory usage: 1.6 MB
无
【问题讨论】:
-
value 列的
dtype是什么?你能发布data.info()的输出吗? -
data.resample('1min').mean()显示什么?这里的问题可能是您分配给一个索引不兼容的空df,这就是为什么您的日期时间索引没有被复制,因为最初索引是int64Index,例如您可以这样做aggregation = pandas.DataFrame({'value':data.resample('1min').mean()}) -
是的,你完全正确!!谢谢!这是对空df的分配。
print(data.resample('1min').mean()完美运行。 -
OK 将发布答案