Python替换字符串数据

Python替换字符串数据,python,pandas,Python,Pandas,我是一名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

我是一名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 
我该怎么做?
谢谢

您可以使用切片表示法,例如

>>> 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)

您可以使用切片表示法,例如

>>> 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)
设置

pd.to\u datetime
dt.ceil

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']})
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
设置

pd.to\u datetime
dt.ceil

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']})
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

如果一直给我函数对象是不可下标的,当我试图把整个列表从2012年1月1日到2012年12月31日?糟糕,我得到了它。非常感谢你!!!我只需要将to_datetime和dt.ceil分为两条命令,如果一直给我函数,那么当我试图将整个列表从2012年1月1日放到2012年12月31日时,函数对象是不可订阅的?哦,我明白了。非常感谢你!!!我只需要将to_datetime和dt.ceil分离成2个命令