串联两个具有日期索引重叠的数据框,结果数据框默认使用“ left”,但“ left”为NaN

User365Go

在下面给出DF1和DF2,如何获得DFresult?

DF1:                        DF2:                        DFresult:       
Date | Value                Date | Value                Date | Value
------------                ------------                ------------
1-01-2019 | 1                                           1-01-2019 | 1       (no overlap, take the one that exists)
1-02-2019 | 1                                           1-02-2019 | 1       (no overlap, take the one that exists)
1-03-2019 | np.NaN          1-03-2019 | 2               1-03-2019 | 2       (left is NaN, take right)
1-04-2019 | 1               1-04-2019 | np.NaN          1-04-2019 | 1       (left is not NaN, take left)
1-05-2019 | np.NaN          1-05-2019 | np.NaN          1-05-2019 | np.NaN  (both NaN, keep it)
1-06-2019 | 1               1-06-2019 | 2               1-06-2019 | 1       (left is not NaN, take left)
                            1-07-2019 | 2               1-07-2019 | 2       (no overlap, take the one that exists)
                            1-08-2019 | 2               1-08-2019 | 2       (no overlap, take the one that exists)
                            1-09-2019 | 2               1-09-2019 | 2       (no overlap, take the one that exists)
                            1-10-2019 | 2               1-10-2019 | 2       (no overlap, take the one that exists)
                            1-11-2019 | 2               1-11-2019 | 2       (no overlap, take the one that exists)

如果我想使用函数来确定重叠的决定怎么办?例如,如果left大于right或left是NaN,则取left:

DF1:                        DF2:                        DFresult:       
Date | Value                Date | Value                Date | Value
------------                ------------                ------------
1-01-2019 | 1                                           1-01-2019 | 1       (no overlap, take the one that exists)
1-02-2019 | 1                                           1-02-2019 | 1       (no overlap, take the one that exists)
1-03-2019 | np.NaN          1-03-2019 | 2               1-03-2019 | 2       (left is NaN, take right)
1-04-2019 | 1               1-04-2019 | np.NaN          1-04-2019 | 1       (right is NaN, take left)
1-05-2019 | np.NaN          1-05-2019 | np.NaN          1-05-2019 | np.NaN  (both NaN, keep it)
1-06-2019 | 1               1-06-2019 | 2               1-06-2019 | 2       (left is not higher, take right)
1-06-2019 | 3               1-07-2019 | 2               1-07-2019 | 3       (left is higher, take left)
1-06-2019 | 1               1-08-2019 | 2               1-08-2019 | 2       (left is not higher, take right)
                            1-09-2019 | 2               1-09-2019 | 2       (no overlap, take the one that exists)
                            1-10-2019 | 2               1-10-2019 | 2       (no overlap, take the one that exists)
                            1-11-2019 | 2               1-11-2019 | 2       (no overlap, take the one that exists)
贝尼

试试看

out = pd.concat([DF1,DF2]).groupby('Date',as_index=False).max()
# for your original one 

#out = pd.concat([DF1,DF2]).groupby('Date',as_index=False).first()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章