excel - df.loc 具有跨两个不同数据源的两个条件

标签 excel pandas dataframe

我有两个 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 的结果。具体来说,有两个条件:

  1. 工作表 A 中的 SN 必须存在于工作表 B 中
  2. 工作表 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/

相关文章:

regex - VBA正则表达式单词后的所有内容

Excel VBA application.visible 立即设置回 True

python - Pandas Dataframe NaN 值替换为无值

python - 从另一个数据框向 Pandas 数据框添加行

python - 转置后找不到列名

c# - 在ExcelDna中获取excel计算模式

excel - 名称与 _FilterDatabase 冲突

python - Pandas DataFrame 日期系列到列表的转换

python - Pandas :合并(内部连接)数据框的行数比原来的多

python - 从网上提取表格