python - 如何根据 python 中的多个标准连接两个数据框?
问题描述
我有以下两个数据框:
入围名单:
ticker date open high low close volume
ABC 2000-12-29 0.450 0.455 0.445 0.455 205843.0
ABC 2001-01-31 0.410 0.410 0.405 0.410 381500.0
ABC 2001-02-28 0.380 0.405 0.380 0.400 318384.0
...
ABC 2001-06-30 0.430 0.445 0.430 0.440 104016.0
MCap
Code EOM mcRank MktCap
ABC 29/12/2000 74 1563.967892
ABC 31/03/2001 98 998.156279
ABC 30/06/2001 59 2035.603350
我现在想创建一个新表,将 mcRank 和 MktCap 的列从 MCap 数据帧添加到 Shortlist 数据帧,其中代码和日期匹配。如果日期在 MCap 中的日期之间,则应使用最后一个已知日期。
结果应该是这样的:
ticker date open high low close volume mcRank MktCap
ABC 2000-12-29 0.450 0.455 0.445 0.455 205843.0 74 1563.967892
ABC 2001-01-31 0.410 0.410 0.405 0.410 381500.0 74 1563.967892
ABC 2001-02-28 0.380 0.405 0.380 0.400 318384.0 74 1563.967892
...
ABC 2001-06-30 0.430 0.445 0.430 0.440 104016.0 59 2035.603350
我已经尝试过 pd.concat 和 pd.merge - 但似乎无法获得正确的结果。
解决方案
你想做的是
首先对齐两种日期格式,您可以将其处理为字符串,这样更容易
第二个 pd.merge 它们,使用 left_on、right_on 和 how='outer' 合并所有内容,并故意创建 NA 值
然后你可以使用 DataFrame.fillna(method='ffill') 根据以前的值填充 na
推荐阅读
- mongodb - $elemMatch 与 $and 在 Mongo shell 中为同一查询提供不同的输出。为什么?
- angular - Kendo-UI 折线图未更新
- ansible - Ansible:循环我们的 shell 命令(Linux 用户组搜索)结果并显示组
- python - 如何从熊猫中的时间列创建特定的时间桶
- python - 新 python 库的想法 - yamldict
- c# - DEP0700:DEP0700:应用程序注册失败。[0x80073CFB] Un autre utilisateur a déjà installé une version décompressée de l'application
- python - 将多个 xlsx 文件合并为一个
- ruby - Ruby 倒计时循环学习实验室
- azure - 创建 Microsoft Azure SQL 数据库会同时创建 SQL Server 和 SQL 数据库资源
- python - 用户输入的 Python 方程