python - Pandas 中两个不同数据框之间的布尔索引
问题描述
因此,我有两个不同长度的不同 Dataframes 和一个公共列:date
,我想对其进行布尔索引,以便它与它们相同的行上df2
的日期匹配。df1
第一个 Dataframedf1
有每日日期,而df2
日期之间有间隔。
DF1:
date usd_am usd_pm usd_avg
13235 2020-05-14 1716.40 1731.60 1724.000
13236 2020-05-15 1734.85 1735.35 1735.100
13237 2020-05-18 1756.90 1734.70 1745.800
13238 2020-05-19 1735.25 1737.95 1736.600
13239 2020-05-20 1750.05 1748.30 1749.175
(13240, 4)
DF2:
day date time
1863 Thursday 2050-09-01 10:30:54 am
1864 Friday 2050-09-30 06:31:48 pm
1865 Sunday 2050-10-30 04:16:00 am
1866 Monday 2050-11-28 04:09:48 pm
1867 Wednesday 2050-12-28 06:15:36 am
(1868, 3)
两个日期列的格式都已统一,并存储为字符串。
我试过这个:
df1['match'] = df1[df1['date'] == df2['date']]
但我收到了这个错误:
ValueError: Can only compare identically-labeled Series objects
预期的输出应该是:
DF1:
date usd_am usd_pm usd_avg match
13235 2020-05-14 1716.40 1731.60 1724.000 False
13236 2020-05-15 1734.85 1735.35 1735.100 True
13237 2020-05-18 1756.90 1734.70 1745.800 True
13238 2020-05-19 1735.25 1737.95 1736.600 True
13239 2020-05-20 1750.05 1748.30 1749.175 False
如果匹配值为 True,则日期df2
也存在于其中。
解决方案
尝试使用 pandas isin 生成新列,然后使用所需名称添加它 - 请参阅https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.isin.html
df2['match'] = df2['date'].isin(df1['date'])
推荐阅读
- amazon-web-services - 是否可以更改 AWS WAF v2 上的 403 错误页面?
- python - ValueError in while predict 测试数据在哪里具有不同形状的词向量
- jenkins - Jenkins Publish Over FTP 发送 dist 而不是此目录的内容
- apache - https 在多个 docker 容器中
- java - 为什么 getMonth 在 java.sql.Date 和 java.util.Date 上被弃用
- python-3.x - 如何在 docker 容器中使用 python3 以编程方式调用 grib_get_data -p?
- python - 无限循环中的Python多线程
- sql - 尝试运行查询时,teradata 中出现错误 3807
- javascript - JavaScript 承诺不会解决或拒绝,它只是由于某种原因而阻塞
- jqassistant - JQAssistant 的 Terraform 插件可用吗?