强制秒为零

时间:2019-03-04 18:21:20

标签: python pandas datetime

我在数据框date中具有以下datetime64格式的df

2018-12-11 15:26:07

如何在Python中将秒数舍入到最接近的分钟数呢?

2018-12-11 15:26:00

谢谢

4 个答案:

答案 0 :(得分:6)

您可以每隔一段时间使用Series.dt.round

df = pd.DataFrame({'a': ['2018-12-11 15:26:07',
                         '2018-12-11 15:26:31']})
df['a'] = pd.to_datetime(df['a'])
df['a'] = df['a'].dt.round('min')
print(df)

#                     a
# 0 2018-12-11 15:26:00
# 1 2018-12-11 15:27:00

答案 1 :(得分:0)

创建df(数据框):

1-通过运行以下命令在控制台(在我的情况下为Jupyter)中导入pandas库。

import pandas as pd

2-现在运行以下命令以创建df(数据帧)。

df = pd.DataFrame({'a': ['2018-12-11 15:26:07',
                         '2018-12-11 15:26:31']})

现在,OP要求获取秒字段00

df['a']=df['a'].str.replace(':[0-9]+$', ':00')
df

当我们现在打印df时,输出如下。

     a
0   2018-12-11 15:26:00
1   2018-12-11 15:26:00

答案 2 :(得分:-1)

最快和最简单的方法是从以下位置重新定义时间单位或更改格式:

df['IDENTIFY_DATE'] = df.IDENTIFY_DATE.astype(
    'datetime64[ns]'

收件人:

df['IDENTIFY_DATE'] = df.IDENTIFY_DATE.astype(
    'datetime64[s]'

unit:字符串,默认为“ ns”:arg的单位(D,s,ms,us,ns)表示单位,它是整数或浮点数。这将基于原点。例如,使用unit ='ms'和origin ='unix'(默认值),可以计算到unix纪元开始的毫秒数。

或更改格式

df['IDENTIFY_DATE'] = df.IDENTIFY_DATE.astype(
    format=“%d/%m/%Y %H:%M”, note that “%f” will parse all the way up to nanoseconds.'

format:字符串,默认为无 strftime来解析时间,例如“%d /%m /%Y”,请注意,“%f”将一直解析到纳秒。

通过: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html

也有帮助:http://strftime.org/

答案 3 :(得分:-1)

这可以工作。

import time
import datetime
from datetime import datetime
from time import gmtime, strftime
date = time.strftime("%m/%d/%Y ")
currenttime = time.strftime("%I:%M:%S %p")
ts = time.strftime("%p")
secon = time.strftime("%S")
minut = time.strftime("%M")
hou = time.strftime("%I")

second = int(secon)
minute = int(minut)
hour = int(hou)
newtime = []
if second> 30:
    minute += 1
    if minute > 59:
        minute = 0
        hour += 1
        if hour == 13:
            hour = 1
            newtime.append(str(hour))
            newtime.append(":")
            newtime.append(str(minute))
            newtime.append(":")
            newtime.append(str(0))
            newtime.append(str(0))
            newtime.append(ts)
            currenttime = "".join(newtime)

            fulldate = date + currenttime
            print(fulldate)
        elif hour == 24:
            hour = 0
            ts = "AM"
            newtime.append(str(hour))
            newtime.append(":")
            newtime.append(str(minute))
            newtime.append(":")
            newtime.append(str(0))
            newtime.append(str(0))
            newtime.append(ts)
            currenttime = "".join(newtime)

            fulldate = date + currenttime
            print(fulldate)
        else:
            newtime.append(str(hour))
            newtime.append(":")
            newtime.append(str(minute))
            newtime.append(":")
            newtime.append(str(0))
            newtime.append(str(0))
            newtime.append(ts)
            currenttime = "".join(newtime)

            fulldate = date + currenttime
            print(fulldate)
    else:
        newtime.append(str(hour))
        newtime.append(":")
        newtime.append(str(minute))
        newtime.append(":")
        newtime.append(str(0))
        newtime.append(str(0))
        newtime.append(ts)
        currenttime = "".join(newtime)

        fulldate = date + currenttime
        print(fulldate)
elif second < 30:
    newtime.append(str(hour))
    newtime.append(":")
    newtime.append(str(minute))
    newtime.append(":")
    newtime.append(str(0))
    newtime.append(str(0))
    newtime.append(ts)
    currenttime = "".join(newtime)

    fulldate = date + currenttime
    print(fulldate)