excel - df.loc 具有跨两个不同数据源的两个条件
问题描述
我有两张我正在尝试进行数据处理的excel表。
表 A
SN Date(M/D/Y) Values
001 1/1/2021 A
002 1/1/2021 B
003 1/1/2021 C
004 1/1/2021 C
表 B
SN Date
001 2/1/2021
002 12/1/2020
003 1/20/2021
目的是使用工作表 B 中的值过滤工作表 A 的结果。具体有两个条件:
- 表 A 中的 SN 必须存在于表 B 中
- 对于相应的 SN,表 A 上的日期必须晚于表 B
因此预期的结果应该是这样的:
SN Date(M/D/Y) Values
002 1/1/2021 B
现在我试图用它来找到它:
value = sheetA.loc[(sheetA['SN'].isin(sheetB['SN'])) & sheetA['Date'] > sheetB['Date']]
但是,我收到 ValueError: Can only compare the same-labeled Series objects。我该怎么做呢?
解决方案
我认为您可以merge
使用它们并比较类似日期的列。然后只保留满足条件的行(并在最后删除Date
来自另一个的行):
merged = sheetA.merge(sheetB)
condition = merged["Date(M/D/Y)"] > merged["Date"]
result = merged[condition].drop(columns="Date")
要得到
>>> result
SN Date(M/D/Y) Values
1 2 2021-01-01 B
推荐阅读
- python - python编码和解码
- javascript - 如何对此应用过滤方法
- node.js - TypeError:无法读取未定义的属性“路径”?强大
- apache-kafka - 打印 Kafka KTable、KStream 和 KGroupedStream 值
- python - 如何使用 NLP 找到两个实体或单词之间的关系?
- c# - Stimulsoft,未找到程序集“Stimulsoft.Data”
- java - 使用类似画廊应用程序的意图将图像设置为壁纸
- python - 将一行 DataFrame 添加到另一个 DataFrame 的优雅方式
- reactjs - 仅将构建反应应用程序部署到应用程序引擎
- wordpress - 如何在 woocommerce restapi v3 中获取订单 ID