【问题标题】:Python/Pandas: Complicated Excel SUMIFS across dataframesPython/Pandas:跨数据帧的复杂 Excel SUMIFS
【发布时间】:2019-02-19 20:48:34
【问题描述】:

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

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

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

sumrange -- Sales['Vehicle Count']

标准 1 -- 销售['车辆生产月/年'] = 索赔['车辆生产月/年']

标准 2 -- 销售['DIS since RUN DATE']

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

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

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

【问题讨论】:

  • 嘿 Aseem,您可能想要 merge 这两个数据帧,基于连接它们的键。之后,您可以使用.loc 根据所述条件过滤您的数据框。之后,您可以选择Vehicle Count 列并将.sum() 应用于它。

标签: python pandas dataframe sumifs


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
相关资源
最近更新 更多