背景:
遇到這樣的需求:
將多列這樣以時間戳爲index的Series數據拼接爲整體的DataFrame(只帶有一列index)
數據舉例:
(1)溫度數據
2020-03-20 00:00:00 10.911639
2020-03-20 00:30:00 10.561648
2020-03-20 01:00:00 10.410831
2020-03-20 01:30:00 9.993831
2020-03-20 02:00:00 9.996133
2020-03-20 02:30:00 9.807382
2020-03-20 03:00:00 9.831737
2020-03-20 03:30:00 9.767458
2020-03-20 04:00:00 9.789868
2020-03-20 04:30:00 9.993025
2020-03-20 05:00:00 10.203707
2020-03-20 05:30:00 10.460783
2020-03-20 06:00:00 10.900585
2020-03-20 06:30:00 11.154725
2020-03-20 07:00:00 11.765203
2020-03-20 07:30:00 12.377077
2020-03-20 08:00:00 13.013389
2020-03-20 08:30:00 13.685595
2020-03-20 09:00:00 14.327092
2020-03-20 09:30:00 14.862767
2020-03-20 10:00:00 15.264174
(2) 溼度數據
2020-03-20 00:00:00 30.071777
2020-03-20 00:30:00 31.718174
2020-03-20 01:00:00 32.415719
2020-03-20 01:30:00 33.542252
2020-03-20 02:00:00 33.725316
2020-03-20 02:30:00 34.507023
2020-03-20 03:00:00 34.402693
2020-03-20 03:30:00 35.050728
2020-03-20 04:00:00 35.082839
2020-03-20 04:30:00 34.889389
2020-03-20 05:00:00 34.481423
2020-03-20 05:30:00 33.377774
2020-03-20 06:00:00 31.306436
2020-03-20 06:30:00 30.868772
2020-03-20 07:00:00 29.368311
2020-03-20 07:30:00 27.515762
2020-03-20 08:00:00 24.488863
2020-03-20 08:30:00 22.346596
2020-03-20 09:00:00 19.126895
2020-03-20 09:30:00 17.111340
2020-03-20 10:00:00 13.799469
解決的問題就是:保留一列時間戳作index,把剩下多列的Series.values拼接在一起。
(1)首先,找一組Series作爲第一列,比如溫度,先將series轉換DataFrame:
self.preData[0]表示Series的溫度數據,本文在self.preData列表中存放了5組上面說的Series數據。
frame = {'Date Time': self.preData[0].index, 'Temperature': self.preData[0].values}
frame = pd.DataFrame(frame) # 轉換DataFrame
(2)
將第一列時間戳作爲index
frame['Date Time'] = pd.to_datetime(frame['Date Time'])
frame.set_index('Date Time', inplace=True)
(3) 按列拼接
frame['Humidity'] = self.preData[1].values # 溫度列的DataFrame,與其他列的Series拼接
frame['Wind'] = self.preData[2].values
frame['WindSpeed'] = self.preData[3].values
frame['itPower'] = self.preData[4].values
因爲列還算少,可直接指定列名。列太多可能要另想辦法,希望對您有幫助