通过将长格式的Pandas DataFrame重塑为宽格式,将数据拆分为窗口的最有效方法

时间:2018-07-09 20:43:09

标签: python pandas dataframe signal-processing

我正在处理时间序列数据,我希望将其拆分为恒定长度的窗口并以列的形式并排堆叠。

长格式数据框的列为:

['index', 'Window', 'Message', 'Sensor', 'Concentration', 'set',
   'windspeed', 'location']
   index  Window  Message    Sensor    Concentration     set  windspeed  location
0      0       0        1    Sensor 1       0.265072     0.0       16.0       1.0
1      1       0        1    Sensor 1       0.266650     0.0       16.0       1.0
2      2       0        1    Sensor 1       0.265072     0.0       16.0       1.0
3      3       0        1    Sensor 1       0.267598     0.0       16.0       1.0
4      4       0        1    Sensor 1       0.266335     0.0       16.0       1.0

“窗口”列的每个唯一值都具有传感器1,传感器2,传感器3和传感器4的200行。这使每个窗口长800行。我的目标是将这些窗口中的每个窗口堆叠为列,其中的值来自“浓度”,并且每一行依次对应于传感器的值。

这等效于(800,N)数组,其中N是窗口数。

我当前的解决方案是此数据透视表:

Rx_array = Rx_df.pivot_table(index=['Sensor','index'],columns=['Window','location'],values=['Concentration'])

使用%timeit进行测试可以得到:

%timeit Rx_array = Rx_df.pivot_table(index=['Sensor','index'],columns=['Window','location'],values=['Concentration'])
6.33 s ± 1.12 s per loop (mean ± std. dev. of 7 runs, 1 loop each)

但是由于我不得不多次运行此函数,所以pivot_table似乎比我希望的慢一些。我尝试了各种groupby()方法,但是不幸的是,直到我意识到做我想做的事情是多么简单之前,Pandas似乎总是令人困惑。

我的问题是,有人可以提出一种更有效的方法吗?

0 个答案:

没有答案