如何在python的时间栏中添加秒数列?

时间:2019-07-10 11:43:17

标签: python datetime time add timedelta

我有一个文件,其中包含一些列,第二列是时间。就像我在下面显示的一样。我需要在第一个文件中的时间列中添加一个以秒为单位的时间列:“ 2.13266 2.21784 2.20719 2.02499 2.16543”。我的问题是如何将这两个时间相加。也许在某些情况下,当我添加这些时间时,它会转到第二天,在这种情况下,如何更改相关行中的日期。

2014-08-26 19:49:32 0
2014-08-28 05:43:21 0
2014-08-30 11:47:54 0
2014-08-30 03:26:10 0

3 个答案:

答案 0 :(得分:0)

最简单的方法可能是将文件读入pandas数据帧,并将每一行解析为datetime对象。然后,您创建一个datetime.timedelta对象,并传递小数秒。

一个datetime对象+一个timedelta可以很好地处理几天,因此无需任何其他代码即可正常工作。最后,将更新的数据框写回文件。

答案 1 :(得分:0)

确保您的datetime字段是实际的日期时间(如果不是从csv读取的话)。

df['DateTimeField'] = pd.to_datetime(df['DateTimeField'])

然后,将秒列转换为时间增量列,然后添加到日期时间字段

df['NewDateTimeField'] = df['DateTimeField'] + pd.to_timedelta(df['TimeDeltaField'], unit='s')

答案 2 :(得分:0)

好的。最后,通过以下代码完成:     library(shiny) library(leaflet) ui <- fluidPage(leafletOutput("map")) myicon=function(condition){ makeIcon( iconUrl = paste0(condition,".png"), iconWidth = 30, iconHeight = 80 )} server <- function(input, output, session) { lats = c(69.5, 70.0, 69.0) lons = c(33.0,33.5,34.3) vals = c(7,12,5) df = data.frame(lats, lons, vals) for (i in 1:nrow(df)) { png(file=paste0(i,".png"), bg="transparent",width=3, height=10, units="in", res=72) bp <- barplot(df$vals[i], height =10*df$vals[i], width=1, ylim=c(0,max(10*df$vals)+30),col="brown4", axes=FALSE); text(bp,10*df$vals[i]+20,labels=df$vals[i],cex=10,font=2); dev.off() } output$map <- renderLeaflet({ top=70.4; bottom=66.05; right=42.05; left=27.5; leaflet(data = df, options = leafletOptions(minZoom = 3,maxZoom = 10))%>% fitBounds(right,bottom,left,top)%>% addTiles()%>% addProviderTiles("Esri.OceanBasemap") %>% addMarkers( icon = myicon(index(df)), lng = lons, lat = lats, options = markerOptions(draggable = TRUE)) }) } shinyApp(ui, server)     d= 2.13266     dd= pd.to_timedelta (int(d), unit='s')     df= pd.Timestamp('2014-08-26 19:49:32')