我是一名Python初学者,负责简单的数据清理工作。
我遇到了这个问题: 我有一个数据框:
datetime
1/1/2012 00:05
1/1/2012 00:10
1/1/2012 00:15
1/1/2012 00:20
1/1/2012 00:25
1/1/2012 00:30
......继续以5分钟的频率持续到年底。
我正在尝试将5个连续行更改为每第6行的值。
基本上,它应该是这样的:
1/1/2012 00:30
1/1/2012 00:30
1/1/2012 00:30
1/1/2012 00:30
1/1/2012 00:30
1/1/2012 00:30
1/1/2012 01:00
1/1/2012 01:00
1/1/2012 01:00
1/1/2012 01:00
1/1/2012 01:00
1/1/2012 01:00
我该怎么做? 感谢
答案 0 :(得分:2)
<强> 设置 强>
df = pd.DataFrame({'datetime': ['1/1/2012 00:05', '1/1/2012 00:10', '1/1/2012 00:15', '1/1/2012 00:20', '1/1/2012 00:25', '1/1/2012 00:30', '1/1/2012 00:35']})
使用 pd.to_datetime
dt.ceil
df['datetime'] = pd.to_datetime(df['datetime']).dt.ceil('30min')
date
0 2012-01-01 00:30:00
1 2012-01-01 00:30:00
2 2012-01-01 00:30:00
3 2012-01-01 00:30:00
4 2012-01-01 00:30:00
5 2012-01-01 00:30:00
6 2012-01-01 01:00:00
答案 1 :(得分:0)
您可以使用切片表示法,例如
>>> spam = tuple(range(30))
>>> spam
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
>>> spam[::6]
(0, 6, 12, 18, 24)
>>> spam[::10]
(0, 10, 20)
>>> spam[::5]
(0, 5, 10, 15, 20, 25)
>>> spam[1::5]
(1, 6, 11, 16, 21, 26)
>>> spam[2::5]
(2, 7, 12, 17, 22, 27)