在Python中为每3列添加小时值

在Python中为每3列添加小时值,python,pandas,Python,Pandas,设想有一个如下所示的原始数据帧: 为了能够处理数据,我想要的是重新排列数据,以便每3列(代表每天的小时值)创建一个带有日期时间值的新行(例如2015-05-31 00:00:00,2015-05-31 01:00:00,2015-05-31 02:00,等等)最后只有4列:Date、Tmin、Tmax和Nsum 这里是导入的CSV的原始字典(仅几行): 首先创建DatetimeIndex,然后重塑3列的值,通过以下方式创建新索引: 通过将模转换为时间增量,最后添加hours: df.index

设想有一个如下所示的原始数据帧:

为了能够处理数据,我想要的是重新排列数据,以便每3列(代表每天的小时值)创建一个带有日期时间值的新行(例如
2015-05-31 00:00:00
2015-05-31 01:00:00
2015-05-31 02:00
,等等)最后只有4列:
Date
Tmin
Tmax
Nsum

这里是导入的CSV的原始字典(仅几行):


首先创建
DatetimeIndex
,然后重塑3列的值,通过以下方式创建新索引:

通过将模转换为时间增量,最后添加
hour
s:

df.index += pd.to_timedelta(np.arange(len(df)) % 24, unit='h')
df = df.rename_axis('Date').reset_index()


你真的让我无言以对。。。非常感谢@马特奥-高兴能帮上忙!
df = df.set_index('Date')

df = pd.DataFrame(df.values.reshape(-1, 3), 
                  index=pd.to_datetime(np.repeat(df.index, len(df.columns) // 3)),
                  columns=['Tmin', 'Tmax', 'Nsum'])
df.index += pd.to_timedelta(np.arange(len(df)) % 24, unit='h')
df = df.rename_axis('Date').reset_index()
print (df.head(30))
                  Date  Tmin  Tmax  Nsum
0  2015-04-30 00:00:00  11.7  11.9   0.0
1  2015-04-30 01:00:00  11.6  11.8   0.0
2  2015-04-30 02:00:00  10.2  11.2   0.0
3  2015-04-30 03:00:00   9.2   9.8   0.0
4  2015-04-30 04:00:00   8.8   9.2   0.0
5  2015-04-30 05:00:00   8.4   8.6   0.1
6  2015-04-30 06:00:00   8.6   8.7   0.0
7  2015-04-30 07:00:00   8.5   8.7   0.0
8  2015-04-30 08:00:00   8.4   8.4   1.4
9  2015-04-30 09:00:00   7.0   8.3   2.9
10 2015-04-30 10:00:00   6.7   6.9   2.9
11 2015-04-30 11:00:00   6.5   6.6   3.7
12 2015-04-30 12:00:00   6.7   7.3   1.1
13 2015-04-30 13:00:00   7.6   8.8   0.0
14 2015-04-30 14:00:00   9.5  11.4   0.0
15 2015-04-30 15:00:00  11.4  12.6   0.0
16 2015-04-30 16:00:00  12.6  13.4   0.0
17 2015-04-30 17:00:00  13.7  14.1   0.0
18 2015-04-30 18:00:00  12.9  13.9   0.0
19 2015-04-30 19:00:00  11.0  12.2   0.0
20 2015-04-30 20:00:00   9.9  10.9   0.0
21 2015-04-30 21:00:00  10.2  10.5   0.0
22 2015-04-30 22:00:00   9.1  10.2   0.0
23 2015-04-30 23:00:00   9.1   9.6   0.0
24 2015-05-01 00:00:00   8.3   8.9   0.0
25 2015-05-01 01:00:00   8.0   8.2   0.1
26 2015-05-01 02:00:00   7.9   8.1   0.0
27 2015-05-01 03:00:00   7.5   7.8   0.0
28 2015-05-01 04:00:00   7.0   7.5   0.0
29 2015-05-01 05:00:00   7.0   7.1   0.0