删除微秒并使日期时间列中的秒数为零?

Posted

技术标签:

【中文标题】删除微秒并使日期时间列中的秒数为零?【英文标题】:Remove microseconds and make seconds zero in datetime column? 【发布时间】:2019-07-22 19:16:03 【问题描述】:

我有一个数据框df 有一个列"date",我想从这种格式中走出来:

2018-12-11 15:26:04.877

进入datetime,其中没有微秒,所有秒都为零:

2018-12-11 15:26:00

到目前为止我所做的是:

import pandas as pd
import datetime
dfdf=pd.read_excel('datefix.xlsx')

print(df.dtypes)
df.date =pd.to_datetime(df.date, errors='coerce')
print(df.date)
df["date"].datetime.replace(microsecond=0)

但我收到以下错误

AttributeError: 'Series' object has no attribute 'datetime'

还有其他方法可以达到预期的结果吗?

【问题讨论】:

df["date"] 是数据框的一部分。它的类型为pd.Series。如果要替换系列中的每个元素,则必须首先深入挖掘数据框。 尝试map 方法将datetime.replace... 应用于列的每个元素。 df["d"] = df["date"].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S')) 给了我格式,但不是列的每个元素,它打印今天的日期和时间,你能告诉我我做错了什么吗? 【参考方案1】:

在日期时间对象上使用 .strftime('%Y-%m-%d %H:%M:%S') 而不是 .replace

如果您有一列日期时间对象,请使用 df['column'].apply(mapper_function) 应用该函数

df["date"] 基本上给你一个熊猫系列对象,而不是列中的单个对象。

【讨论】:

您需要定义一个函数,该函数接受一个日期对象并返回该对象的 strftime。您需要应用该功能,而不是 time.strftime("...")

以上是关于删除微秒并使日期时间列中的秒数为零?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 gmtime() 的时间 + 日期输出中获取纪元以来的秒数?

从开始时间和经过的秒数计算日期时间

在 Python 中确定两个日期之间的秒数

获取从日期到月底 PHP 的秒数

两个日期之间按小时分组的秒数

java怎样计算两个日期之间的秒数