如何根据条件减去一个数据帧与另一个数据帧的总计,直到 0

问题描述 投票:0回答:1

我是 python 和 pandas 的新手,所以这是我的问题:

我有两个数据框,df1 有两列,一列用于标签,一列用于对应于每个标签的 Toal 的整数,而 df2 包含每天使用的数量。我想减去 df2 的每一行,直到 df1 等于或接近 0,并向 df1 添加一列,即最后一行减去的日期(它可能位于新的数据帧 df3 中)。减法需要满足两个条件:

  1. 标签需要相等
  2. 减法不能小于0

df1 = DF with Totals

df2 = DF with quantities

我希望有人能帮助我。

python pandas dataframe iteration subtraction
1个回答
0
投票

我相信 .cumsum() 和 .idxmin() 会对此有所帮助。

  1. 在标签上加入数据框
  2. 创建一个新的“运行数量”列,它是“数量”列上的 .cumsum() (.cumsum() 上的 pandas 文档关于 .cumsum() 的博客文章)
  3. 新建一个“运行总计”列,即“总计”-“运行数量”
  4. 仅过滤“运行总计”中的正值(StackOverflow 关于过滤负值的答案
  5. 使用 .idxmin() 过滤到每个标签“运行总计”的最小值(有关 .idxmin() 的 pandas 文档StackOverflow 关于 .idxmin() 的答案

这将为您提供一个三列数据框,每个标签一行,运行总计最接近但不低于 0 的日期,以及金额(总计 - 该日期的运行数量)。

© www.soinside.com 2019 - 2024. All rights reserved.