我有两个数据框,如下所示:

df1 =
index                 value

2014-05-21 09:30:00    0.0
2014-05-21 10:00:00   10.0
2014-05-21 10:30:00    3.0

.....

2017-07-10 22:30:00   18.3
2017-07-10 23:00:00    7.6
2017-07-10 23:30:00    0.0


长度等于55037,另一个等于

df2 =
index                 value

2014-05-21 09:00:00    0.0
2014-05-21 10:00:00   13.0

.....

2017-07-10 21:00:00    1.6
2017-07-10 22:00:00   32.1
2017-07-10 23:00:00    7.6


长度等于27519,上面的两个数据帧是groupby,具有不同的时间步长,现在我想在开始和结束时自动匹配时间步长。

例如,df1中缺少“ 2014-05-21 09:00:00”,我该如何编写函数,将df1放进去,它将检查开头和结尾是否匹配
 df2,然后返回一个新的df1,其开头和结尾等于df2,其值等于零。

因此最终新的df1如下所示,

new_df1 =
index                 value

2014-05-21 09:00:00    0.0
2014-05-21 09:30:00    0.0
2014-05-21 10:00:00   10.0
2014-05-21 10:30:00    3.0

 .....

2017-07-10 22:30:00   18.3
2017-07-10 23:00:00    7.6
2017-07-10 23:30:00    0.0


且长度等于55038(确保它是df2的两倍)

有人知道吗?非常感谢!

最佳答案

如果需要,请添加所有行,其中缺少df2.index的日期,请添加combine_first

df = df1.combine_first(df2)
print (df)
                     value
2014-05-21 09:00:00    0.0 <- value not exist in df1, used df2 value
2014-05-21 09:30:00    0.0
2014-05-21 10:00:00   10.0 <-value exist in both df, used df1 value
2014-05-21 10:30:00    3.0
2017-07-10 21:00:00    1.6
2017-07-10 22:00:00   32.1
2017-07-10 22:30:00   18.3
2017-07-10 23:00:00    7.6
2017-07-10 23:30:00    0.0

关于python - 使用日期时间索引根据时间在 Pandas 数据框中插入行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49592930/

10-14 17:42
查看更多