在Python中为每3列添加小时值
设想有一个如下所示的原始数据帧: 为了能够处理数据,我想要的是重新排列数据,以便每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
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