为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 的特定时间序列数据框

Pandas 的特定时间序列数据框

素胚勾勒不出你 2022-11-09 17:26:59
我有一年的 5 分钟数据,如下所示:df = pd.DataFrame([['1/1/2019 00:05', 1], ['1/1/2019 00:10', 5],['1/1/2019 00:15', 1], ['1/1/2019 00:20',3], ['1/1/2019 00:25', 1],                   ['1/1/2019 00:30', 2], ['1/1/2019 00:35', 6],['1/1/2019 00:40', 8],['1/1/2019 00:45', 1], ['1/1/2019 00:55', 2],                   ['1/1/2019 01:00', 8],['1/1/2019 01:05', 1], ['1/1/2019 01:10', 5],['1/1/2019 01:15', 1], ['1/1/2019 01:20',3],['1/1/2019 01:25', 1],                   ['1/1/2019 01:30', 2], ['1/1/2019 01:35', 6],['1/1/2019 01:40', 8],['1/1/2019 01:45', 1], ['1/1/2019 01:55', 2],                   ['1/1/2019 02:00', 8]],                  columns = ['Date','Value'])我希望在所有相应期间每小时转换一次。现在,每一行对应于特定日期和特定月份的一小时。像这样的东西:df = pd.DataFrame([['day1hour0month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3],  ['day1hour1month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3],                    ['day1hour2month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3], ['day1hour3month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3],                    ['day1hour4month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3], ['day1hour5month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3],                    ['day1hour6month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3], ['day1hour7month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3],                    ['day1hour8month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3], ['day1hour9month1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3,3],                    ['day31hour23month12', 1, 1, 8, 0, 6, 5, 3, 1, 1, 2,3,5]],                  columns = ['Date', 'min05', 'min10', 'min15', 'min20', 'min25',                              'min30', 'min35', 'min40', 'min45', 'min50',                             'min55', 'min60'])有没有办法使用 Pandas 时间序列功能(不使用 for 循环)来做到这一点?对于实施此操作的任何建议,我将不胜感激。先感谢您!
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

根据您的示例数据框:


In [2213]: df['Date'] = pd.to_datetime(df['Date'])

In [2191]: df1['dmh'] = 'day' + df.Date.dt.day.astype(str) + 'hour' + df.Date.dt.hour.astype(str) + 'month' + df.Date.dt.month.astype(str)


In [2199]: df['minute'] = 'min' + df.Date.dt.minute.astype(str)


In [2211]: df.pivot(index='dmh', columns='minute', values='Value')                                                                                                                                          

Out[2211]: 

minute           min0  min10  min15  min20  min25  min30  min35  min40  min45  min5  min55

dmh                                                                                       

day1hour0month1   NaN    5.0    1.0    3.0    1.0    2.0    6.0    8.0    1.0   1.0    2.0

day1hour1month1   8.0    5.0    1.0    3.0    1.0    2.0    6.0    8.0    1.0   1.0    2.0

day1hour2month1   8.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   NaN    NaN


查看完整回答
反对 回复 2022-11-09
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号