删除微秒并使日期时间列中的秒数为零?
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("...")
以上是关于删除微秒并使日期时间列中的秒数为零?的主要内容,如果未能解决你的问题,请参考以下文章