数据集有一个列,其日期格式为“ 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()
这就是我执行替换操作的方式。但是,将上述行分配给日期不会更新原始系列。如何更新原始列
答案 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