我有两个 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 中
- 工作表 A 上相应 SN 的日期必须晚于工作表 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 Comparesame-labeled Series objects。 我应该怎样做呢?
最佳答案
我认为您可以合并
它们并比较类似日期的列。然后仅保留满足条件的行(并删除最后来自另一行的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
关于excel - df.loc 具有跨两个不同数据源的两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67971957/