Python/Pandas:跨数据帧的复杂 Excel SUMIFS

Python/Pandas: Complicated Excel SUMIFS across dataframes

我正在使用两个数据框,一个叫做 Sales,如图所示

还有另一个名为 Claims 的数据框,如图所示

我想在另一个名为 "Subset" 的数据框中创建一个名为 "SUMIFS" 的新列(即子集 ['SUMIFS'] = ...),我想知道它是否可以在 pandas 中跨数据帧执行类似 SUMIFS 的 excel 操作。 SUMIFS 的标准是:

总和 -- 销售额['Vehicle Count']

条件 1 -- 销售额['Vehicle Production Month/Year'] = 索赔['Vehicle Production Month/Year']

条件 2 -- 销售额['DIS since RUN DATE'] < 索赔['Claim DIS']

这是电子表格形式的销售数据框

这是电子表格形式的索赔数据框

最后,这是我在 excel 中使用的原始公式,我想将其转换为 Python:=SUMIFS(Sales!$D$2:$D $1156,销售额!$A$2:$A$1156,理赔!B2,销售额!$E$2:$E$1156,<"&Claims!O2)

如果你在Python中已经有了两个数据框,那么你可以简单地这样做。注意:这仅在两个数据帧都已排序时才有效。 (如果您有 ID 列,请在 运行 以下代码之前对其进行排序)

Sales['Vehicle Count'][
(Sales['Vehicle Production Month/Year'] == Claims['Vehicle Production Month/Year'])
& ['DIS since RUN DATE'] < Claims['Claim DIS'])
].sum()

我基本上是通过两个if条件过滤数据,所以剩下的就是你想要的。您所要做的就是总结一下。 (这是一个直接比较,整个系列由另一个系列)