我在数据框date
中具有以下datetime64格式的df
列
2018-12-11 15:26:07
如何在Python中将秒数舍入到最接近的分钟数呢?
2018-12-11 15:26:00
谢谢
答案 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)