Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在大熊猫中舍入日期和时间_Python 3.x_Pandas_Datetime_Type Conversion_Decimal - Fatal编程技术网

Python 3.x 如何在大熊猫中舍入日期和时间

Python 3.x 如何在大熊猫中舍入日期和时间,python-3.x,pandas,datetime,type-conversion,decimal,Python 3.x,Pandas,Datetime,Type Conversion,Decimal,我在csv文件中有一个包含许多列和行的数据框,其中一列是picku\u datetime,我试图对datetime进行四舍五入以计算值 Pickup_Datetime Dropoff_Datetime 2018-01-01 00:00:20 2018-01-01 00:06:44 2018-01-01 00:00:23 2018-01-01 00:31:12 . . . 2018-01-31 23:59:43 2018-02-01 00:21:01 201

我在csv文件中有一个包含许多列和行的数据框,其中一列是picku\u datetime,我试图对datetime进行四舍五入以计算值

Pickup_Datetime         Dropoff_Datetime
2018-01-01 00:00:20     2018-01-01 00:06:44
2018-01-01 00:00:23     2018-01-01 00:31:12
.
.
.
2018-01-31 23:59:43     2018-02-01 00:21:01
2018-01-31 23:59:50     2018-02-01 00:21:43
我尝试了不同的路径来更改类型,但仍然给我一条错误消息

df = data.round["H"]
df


我预计产出:

Pickup_Datetime
2018-01-31 00:00:00
2018-01-31 01:00:00
2018-01-31 02:00:00
.
.
.
.

编辑:参考其他答案,简单得多

您是否尝试过将每个datetime转换为历元,将其除以3600(一小时内的秒数),然后将其乘以3600,再将其转换回datetime

Epoch实际上是自1970-01-01 00:00:00以来的秒数

一些代码可以做到这一点(不确定如何与使用dataframe集成):

可能需要调整以符合PEP8标准;)


注意:如果数据帧将日期时间作为字符串提取,则必须首先使用datetime.strTime(格式),documentation将其转换为datetime对象。要对日期时间进行舍入,请使用datetime series的
.dt
访问器

df['Pickup_Datetime'] = df['Pickup_Datetime'].dt.round(freq='1H')

简而言之,您想将数据帧中的日期时间戳舍入到最接近的小时。@AER是的,但给我一个错误小数必须是整数,这比我的要简单得多:)
Pickup_Datetime
2018-01-31 00:00:00
2018-01-31 01:00:00
2018-01-31 02:00:00
.
.
.
.
datetime.datetime.fromtimestamp(round((df['Pickup_Datetime'].apply(strftime,format='%s').apply(int)/3600)*3600)
df['Pickup_Datetime'] = df['Pickup_Datetime'].dt.round(freq='1H')