【问题标题】: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')) 给了我格式,但不是列的每个元素,它打印今天的日期和时间,你能告诉我我做错了什么吗?

标签: python pandas datetime dataframe format


【解决方案1】:

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

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

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

【讨论】:

  • 您需要定义一个函数,该函数接受一个日期对象并返回该对象的 strftime。您需要应用该功能,而不是 time.strftime("...")
猜你喜欢
  • 1970-01-01
  • 2015-10-13
  • 2016-02-14
  • 2016-12-14
  • 2012-02-19
  • 2015-01-03
  • 2022-06-13
相关资源
最近更新 更多