Python 具有不同时间戳和不同数据点数量的两个时间序列数据
我有两个时间序列数据,具有不同的时间戳和不同数量的数据点 第一个数据帧是:Python 具有不同时间戳和不同数据点数量的两个时间序列数据,python,r,date,dataframe,time,Python,R,Date,Dataframe,Time,我有两个时间序列数据,具有不同的时间戳和不同数量的数据点 第一个数据帧是: Time Power_kW 10/9/2017 1:14:12 0.185 10/9/2017 1:14:53 0.182 10/9/2017 1:15:13 0.184 10/9/2017 1:15:53 0.175 . . . . 10/9/2017 1:44:37 0.175 . . . . 10/9/2017 2:13:38 0.181 . . . .
Time Power_kW
10/9/2017 1:14:12 0.185
10/9/2017 1:14:53 0.182
10/9/2017 1:15:13 0.184
10/9/2017 1:15:53 0.175
. .
. .
10/9/2017 1:44:37 0.175
. .
. .
10/9/2017 2:13:38 0.181
. .
. .
10/9/2017 2:24:40 0.179
第二个数据帧是:
Time Power_kW
10/9/2017 1:14:12 0.185
10/9/2017 1:14:53 0.182
10/9/2017 1:15:13 0.184
10/9/2017 1:15:53 0.175
. .
. .
10/9/2017 1:44:37 0.175
. .
. .
10/9/2017 2:13:38 0.181
. .
. .
10/9/2017 2:24:40 0.179
Local Time Value
10/9/2017 1:13:01 0
10/9/2017 1:42:10 1
10/9/2017 2:11:58 0
10/9/2017 2:23:30 1
第二个数据帧值表示两个日期之间的值。这意味着“0”的值应该从2017年9月10日1:13:01 0传播到2017年9月10日1:42:10。值1从2017年10月9日1:42:10到2017年10月9日2:23:30,依此类推
我希望通过合并这两个数据帧列值来获得与第一个数据帧相同数量的数据点。我有许多和第二个数据帧相似的数据帧,这些数据帧都将帮助我建立和时间相关的关系
合并后,我尝试得到以下结果:
Time Power_kW Value
10/9/2017 1:14:12 0.185 0
10/9/2017 1:14:53 0.182 0
10/9/2017 1:15:13 0.184 0
10/9/2017 1:15:53 0.175 0
. .
. .
10/9/2017 1:44:37 0.175 1
10/9/2017 1:45:47 0.176 1
. .
10/9/2017 2:13:38 0.181 0
. .
. .
10/9/2017 2:24:40 0.179 1
(我在结果中添加了一些点来表示整个数据的外观。)
我确实提到了这些线程,它们的目的并不是传播
谁能给我一盏灯吗 尝试使用R的包进行滚动连接,这一点解释得很好:
库(data.table)
df1尝试使用R的包进行滚动连接,这一点解释得很好:
库(data.table)
df1假设最后注释中给出的输入。将数据帧转换为zoo并运行na.locf
以填充na值。最后选择与第一个表对应的元素,并可选地转换回数据帧:
library(zoo)
# convert to zoo
Power_kW <- read.zoo(DF1, tz = "")
Value <- read.zoo(DF2, tz = "")
z <- na.locf(merge(Power_kW, Value))[time(Power_kW)]
fortify.zoo(z) # optional
注意:我们假设以下输入。注意,我们假设POSIXct日期时间
Lines1 <- "
Time,Power_kW
10/9/2017 1:14:12,0.185
10/9/2017 1:14:53,0.182
10/9/2017 1:15:13,0.184
10/9/2017 1:15:53,0.175
10/9/2017 1:44:37,0.175
10/9/2017 1:45:47,0.176
10/9/2017 2:13:38,0.181
10/9/2017 2:24:40,0.179"
Lines2 <- "
LocalTime,Value
10/9/2017 1:13:01,0
10/9/2017 1:42:10,1
10/9/2017 2:11:58,0
10/9/2017 2:23:30,1"
fmt <- "%m/%d/%Y %H:%M:%S"
DF1 <- read.csv(text = Lines1)
DF2 <- read.csv(text = Lines2)
# convert date/time to POSIXct
fmt <- "%m/%d/%Y %H:%M:%S"
DF1$Time <- as.POSIXct(DF1$Time, format = fmt)
DF2$LocalTime <- as.POSIXct(DF2$LocalTime, format = fmt)
Lines1假设末尾注释中给出的输入。将数据帧转换为zoo并运行na.locf
以填充na值。最后选择与第一个表对应的元素,并可选地转换回数据帧:
library(zoo)
# convert to zoo
Power_kW <- read.zoo(DF1, tz = "")
Value <- read.zoo(DF2, tz = "")
z <- na.locf(merge(Power_kW, Value))[time(Power_kW)]
fortify.zoo(z) # optional
注意:我们假设以下输入。注意,我们假设POSIXct日期时间
Lines1 <- "
Time,Power_kW
10/9/2017 1:14:12,0.185
10/9/2017 1:14:53,0.182
10/9/2017 1:15:13,0.184
10/9/2017 1:15:53,0.175
10/9/2017 1:44:37,0.175
10/9/2017 1:45:47,0.176
10/9/2017 2:13:38,0.181
10/9/2017 2:24:40,0.179"
Lines2 <- "
LocalTime,Value
10/9/2017 1:13:01,0
10/9/2017 1:42:10,1
10/9/2017 2:11:58,0
10/9/2017 2:23:30,1"
fmt <- "%m/%d/%Y %H:%M:%S"
DF1 <- read.csv(text = Lines1)
DF2 <- read.csv(text = Lines2)
# convert date/time to POSIXct
fmt <- "%m/%d/%Y %H:%M:%S"
DF1$Time <- as.POSIXct(DF1$Time, format = fmt)
DF2$LocalTime <- as.POSIXct(DF2$LocalTime, format = fmt)
Lines1在我看来像是一个非等连接。搜索这个词,你会得到很多点击率。如果您需要更多帮助,请在问题中提供一个可重复的示例(使用dput
)。对于涉及时间变量的问题,这一点尤其重要,因为它可以帮助我们更好地理解您的数据结构,并使复制和粘贴数据变得更容易,而不是从头开始构建数据。对我来说,这看起来像是一个不平等的连接。搜索这个词,你会得到很多点击率。如果您需要更多帮助,请在问题中提供一个可重复的示例(使用dput
)。这对于涉及时间变量的问题尤其重要,因为它有助于我们更好地理解您的数据结构,并使复制和粘贴数据更容易,而不是从头开始构建数据。谢谢:)我收到了谢谢:)我收到了谢谢,这是很多知识:)而且很有效。谢谢知识:)它是有效的。