【问题标题】:How to change values of all instances from a pandas series of datetime64 dtype如何从 pandas 系列的 datetime64 dtype 更改所有实例的值
【发布时间】:2020-05-24 03:31:46
【问题描述】:

数据集有一列的日期格式为“DD-MM-YY”。在检查日期列中的年份值时,注意到一些条目被错误地设置为 '12-nov-73' ,应该是 '12-nov-13' 。在数据框中加载数据集后,格式将转换为 datetime64 dtype,其中 '1973' 作为年份之一。如何替换日期列中的所有此类值?

date = df.LAST_RECEIPT_DATE

我将该列提取为一个系列

date.map(lambda t: t.date().year).unique()

这就是我检查唯一年份值的方式

 date[date.dt.year==1973].map(lambda t:t.replace(year=2013))

这就是我执行替换操作的方式。但是,在将上述行分配到日期时,它不会更新原始系列。我如何更新原始列

【问题讨论】:

  • 您也可以在解析之前更改字符串,对吧?
  • 添加具有代表性的数据样本以及所需的输出可能会有所帮助。请参阅minimal reproducible example 了解更多信息。

标签: python pandas


【解决方案1】:

假设我们有一个 df:

df
    date
0   2012-11-12
1   1973-11-12

那么我们可以替换为:

df.date[df.date.dt.year == 1973] = df.date[df.date.dt.year == 1973].map(lambda t: dt.datetime(2012, t.month, t.day))
df

    date
0   2012-11-12
1   2012-11-12

【讨论】:

  • 是的,我最终解决了这个问题。由于日期是一个系列,通过放置 date[date.dt.year==1973].map(lambda t:t.replace(year=2013)) ,替换 pd.update() 方法中的操作,我能够更改所有相关行。我认为更新方法在计算上会更有效。
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2017-05-18
  • 2020-10-17
  • 1970-01-01
相关资源
最近更新 更多