首页 > 解决方案 > 根据不同的日期加入两个数据框

问题描述

我有两个数据框。一个是苹果股票的工作日和股价。另一个,持有每股收益的季度数据。但是,日期列表不同,但按时间顺序排列。我想将eps框架的时间顺序值添加到现有的价格数据框中。

    date    close
0   2020-07-06  373.85
1   2020-07-02  364.11
2   2020-07-01  364.11
3   2020-06-30  364.80
4   2020-06-29  361.78
...     ...     ...
9969    1980-12-18  0.48
9970    1980-12-17  0.46
9971    1980-12-16  0.45
9972    1980-12-15  0.49
9973    1980-12-12  0.51

每股收益:

    date        eps
0   2020-03-28  2.59
1   2019-12-28  5.04
2   2019-09-28  3.05
3   2019-06-29  2.22
4   2019-03-30  2.48
...     ...     ...
71  2002-06-29  0.09
72  2002-03-30  0.11
73  2001-12-29  0.11
74  2001-09-29  -0.11
75  2001-06-30  0.17

所以我的结果应该是这样的:

            close   eps
date
...         
2020-04-01  240.91  NaN
2020-03-31  254.29  NaN
2020-03-30  254.81  NaN
2020-03-28     NaN  2.59
2020-03-27  247.74  NaN
2020-03-26  258.44  NaN

请注意值“2020-03-28”,它以前只存在于 eps 框架中,现在整齐地放置在它所属的位置。

但是,我无法让它工作。首先,我认为必须有一个简单的连接、合并或连接,它具有此功能并适合数据,如果它属于,按时间顺序排列,但到目前为止,我找不到它。

我失败的尝试:

  1. pd.concat([df, eps], axis=0, sort=True)- 只是附加两个数据框
  2. pd.merge_ordered(df, eps, fill_method="ffill", left_by="date")- 简单地忽略 eps 日期

目标是用两张图绘制这个数据框——一张是股票价格,另一张是 eps 数据。

标签: pythonpandasdataframedate

解决方案


我认为你需要:

pd.concat([df.set_index('date'), eps.set_index('date')]).sort_index(ascending=False)

推荐阅读