python - 根据不同的日期加入两个数据框
问题描述
我有两个数据框。一个是苹果股票的工作日和股价。另一个,持有每股收益的季度数据。但是,日期列表不同,但按时间顺序排列。我想将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 框架中,现在整齐地放置在它所属的位置。
但是,我无法让它工作。首先,我认为必须有一个简单的连接、合并或连接,它具有此功能并适合数据,如果它属于,按时间顺序排列,但到目前为止,我找不到它。
我失败的尝试:
pd.concat([df, eps], axis=0, sort=True)
- 只是附加两个数据框pd.merge_ordered(df, eps, fill_method="ffill", left_by="date")
- 简单地忽略 eps 日期
目标是用两张图绘制这个数据框——一张是股票价格,另一张是 eps 数据。
解决方案
我认为你需要:
pd.concat([df.set_index('date'), eps.set_index('date')]).sort_index(ascending=False)
推荐阅读
- python - Python:这个翻译器如何替换字母
- reactjs - React - 设置异步响应的状态
- sql - SQL执行多记录,多列加法返回单个数字
- mysql - MySQL 查询仅在选择特定列和 WHERE JSON_CONTAINS() 时超时
- javascript - 如何组合两个服务人员?
- tcp - 为什么 Hazelcast 连接到另一台主机
- javascript - 从 Python 脚本的 Node.js 中的 spawn 进程获取数据
- python - 由于 SOCKS 依赖关系,无法在虚拟环境中安装任何软件包
- javascript - 从 pdf 和文档中提取文本和元数据
- amazon-web-services - AWS Elastic Beanstalk 单个容器,如何将新容器部署到现有环境?