为什么pandas为重新采样sql数据创建NaN?

时间:2016-08-10 10:12:17

标签: python pandas numpy

我是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

1 个答案:

答案 0 :(得分:2)

这里的问题是您尝试添加一个包含不兼容索引的数据的新列,当您创建一个空df时,索引类型最初将为UIView dtype,您是在索引为CGPoint的位置添加数据,以便为所有行获取object

如果你传递df的datetimeIndex中的数据和索引,那么这将有效:

NaN

如果你想要一个int索引,那么你可以这样做:

ctor