我处理了一个数据集,并能够以这种方式重新排列它 ( pastebin )。
date type value location
0 2017-10-03 D 3035 INDIA
0 2017-10-03 D 3035 INDIA
0 2017-10-03 D 3035 INDIA
0 2017-10-03 D 3035 INDIA
0 2017-10-03 D 3035 INDIA
................................
total 24 rows for D type and India
................................
1 2017-10-03 F 3035 INDIA
1 2017-10-03 F 3035 INDIA
1 2017-10-03 F 3035 INDIA
1 2017-10-03 F 3035 INDIA
1 2017-10-03 F 3035 INDIA
................................
total 24 rows for F type and India
................................
2 2017-10-03 D 3035 CHINA
2 2017-10-03 D 3035 CHINA
2 2017-10-03 D 3035 CHINA
2 2017-10-03 D 3035 CHINA
2 2017-10-03 D 3035 CHINA
................................
total 24 rows for D type and China
................................
预期输出:我想向日期列添加小时数(从 00:00 到 23:00)。 日期、类型、位置
正好有 24 行。所以我只需要循环遍历日期列,获取前 24 行,附加时间(00:00 到 23:00),然后对接下来的 24 行执行相同的操作,依此类推...
0 2017-10-03 00:00 D 3035 INDIA
0 2017-10-03 01:00 D 3035 INDIA
0 2017-10-03 02:00 D 3035 INDIA
0 2017-10-03 03:00 D 3035 INDIA
0 2017-10-03 04:00 D 3035 INDIA
................................
total 24 rows for D type and India
................................
1 2017-10-03 01:00 F 3035 INDIA
1 2017-10-03 02:00 F 3035 INDIA
1 2017-10-03 03:00 F 3035 INDIA
1 2017-10-03 03:00 F 3035 INDIA
1 2017-10-03 04:00 F 3035 INDIA
最佳答案
我认为你可以使用groupby
按索引 cumcount
计算计数,然后将其转换为小时
to_timedelta
它被添加到日期
s:
#convert to datetime if necessary
df['date'] = pd.to_datetime(df['date'])
df['date'] += pd.to_timedelta(df.groupby(level=0).cumcount(), unit='H')
print (df.head(30))
date type value location
0 2017-10-03 00:00:00 D 3035 INDIA
0 2017-10-03 01:00:00 D 3035 INDIA
0 2017-10-03 02:00:00 D 3035 INDIA
0 2017-10-03 03:00:00 D 3035 INDIA
0 2017-10-03 04:00:00 D 3035 INDIA
0 2017-10-03 05:00:00 D 3035 INDIA
0 2017-10-03 06:00:00 D 3035 INDIA
0 2017-10-03 07:00:00 D 3035 INDIA
0 2017-10-03 08:00:00 D 3035 INDIA
0 2017-10-03 09:00:00 D 3035 INDIA
0 2017-10-03 10:00:00 D 3035 INDIA
0 2017-10-03 11:00:00 D 3035 INDIA
0 2017-10-03 12:00:00 D 3035 INDIA
0 2017-10-03 13:00:00 D 3035 INDIA
0 2017-10-03 14:00:00 D 3035 INDIA
0 2017-10-03 15:00:00 D 3035 INDIA
0 2017-10-03 16:00:00 D 3035 INDIA
0 2017-10-03 17:00:00 D 3035 INDIA
0 2017-10-03 18:00:00 D 3035 INDIA
0 2017-10-03 19:00:00 D 3035 INDIA
0 2017-10-03 20:00:00 D 3035 INDIA
0 2017-10-03 21:00:00 D 3035 INDIA
0 2017-10-03 22:00:00 D 3035 INDIA
0 2017-10-03 23:00:00 D 3035 INDIA
1 2017-10-03 00:00:00 F 3035 INDIA
1 2017-10-03 01:00:00 F 3035 INDIA
1 2017-10-03 02:00:00 F 3035 INDIA
1 2017-10-03 03:00:00 F 3035 INDIA
1 2017-10-03 04:00:00 F 3035 INDIA
1 2017-10-03 05:00:00 F 3035 INDIA
关于python - 将小时(00 到 23)添加到日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46664263/