我有两个数据框,如下所示:
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/