如何更改熊猫系列datetime64 dtype中所有实例的值

时间:2020-02-08 00:34:46

标签: python pandas

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

library(shiny)

dd <- data.frame("in1"=rep(LETTERS[1:3], 2), "in2"=letters[1:6], stringsAsFactors = FALSE)

ui <- basicPage(
    selectInput(
        inputId = "in1",
        label = "in1",
        choices = unique(dd$in1), 
        multiple = TRUE
    ),
    selectInput(
        inputId = "in2",
        label = "in2",
        choices = unique(dd$in2),
        multiple = TRUE
    )
)

server <- function(input, output, session) {

    current_in2 <- reactiveVal()

    observe({
        current_in2(input$in2)  
    })

    # as normal except notice that
    # `current_in2()` sets the pre-selected choices 
    observeEvent(eventExpr = input$in1,
                 handlerExpr = {
                     updateSelectInput(
                         session = session,
                         inputId = "in2",
                         label = "in2",
                         # keep what we had before
                         selected = current_in2(),
                         choices = dd[dd$in1 %in% input$in1, "in2"]
                     )
                 })
}

shinyApp(ui, server)

我将该列提取为一系列

date = df.LAST_RECEIPT_DATE

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

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

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

1 个答案:

答案 0 :(得分:0)

假设我们有一个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