如何根据条件减去一个 Dataframe 总计另一个 Dataframe 直到 0

How subtract a Dataframe with totals another Dataframe based on condition and until 0

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

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

  1. 标签必须相等
  2. 减法不能小到0

df1 = DF with Totals

df2 = DF with quantities

希望有人能帮助我。

欢迎使用 Whosebug!

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

  1. 在标签上加入您的数据框
  2. 创建一个新的“运行 数量”列,它是“数量”列 (pandas documenation on .cumsum(); blog post on .cumsum())
  3. 上的 .cumsum()
  4. 创建一个新的“运行 总计”列,即“总计”-“运行 数量”
  5. 仅筛选“运行 总计”()
  6. 中的正值
  7. 使用 .idxmin() (pandas documentation on .idxmin(); )
  8. 过滤每个标签的最小值“运行 总计”

这应该给你一个 three-column 数据框,每个标签一行,运行 总数最接近但不低于 0 的日期,以及金额(总计 - 运行 该日期的数量)。