Python 迭代非零列以获取成本

Python 迭代非零列以获取成本,python,pandas,Python,Pandas,我有一个每周销售数量、金额和成本的数据,我想通过将每周销售数量除以成本来找出每个产品行的成本价格,但是最近一行的值可能为零值,因此,我希望跳过它,因为它有零值,并使用前一周计算成本,或者直到它找到非零值并计算项目成本(wkx_成本/wkx_金额)。还请注意,产品价格可能在几周内发生了变化,因此我需要最近一周的成本,但如果不可用,请尝试计算前一周的项目成本价格 df2 = pd.DataFrame([ {'product':'iphone11', 'wk1_qty':2, 'wk1_amo

我有一个每周销售数量、金额和成本的数据,我想通过将每周销售数量除以成本来找出每个产品行的成本价格,但是最近一行的值可能为零值,因此,我希望跳过它,因为它有零值,并使用前一周计算成本,或者直到它找到非零值并计算项目成本(wkx_成本/wkx_金额)。还请注意,产品价格可能在几周内发生了变化,因此我需要最近一周的成本,但如果不可用,请尝试计算前一周的项目成本价格

    df2 = pd.DataFrame([
{'product':'iphone11', 'wk1_qty':2, 'wk1_amount':100,
    'wk1_cost':60, 'wk2_qty':3, 'wk2_amount':150,
    'wk2_cost':90, 'wk3_qty':0, 'wk3_amount':0,
    'wk3_cost':0, 'wk4_qty':5, 'wk4_amount':300,
    'wk4_cost':60, 'wk5_qty':0, 'wk5_amount':0,
    'wk5_cost':0}, {'product':'acer laptop', 'wk1_qty':3, 'wk1_amount':300,
    'wk1_cost':210, 'wk2_qty':3, 'wk2_amount':300,
    'wk2_cost':210, 'wk3_qty':0, 'wk3_amount':0,
    'wk3_cost':0, 'wk4_qty':5, 'wk4_amount':550,
    'wk4_cost':375, 'wk5_qty':5, 'wk5_amount':500,
    'wk5_cost':375}])
结果应该是什么样的

    df2 = pd.DataFrame([
{'product':'iphone11', 'wk1_qty':2, 'wk1_amount':100,
    'wk1_cost':60, 'wk2_qty':3, 'wk2_amount':150,
    'wk2_cost':90, 'wk3_qty':0, 'wk3_amount':0,
    'wk3_cost':0, 'wk4_qty':5, 'wk4_amount':300,
    'wk4_cost':160, 'wk5_qty':0, 'wk5_amount':0,
    'wk5_cost':0, 'product_price':32}, {'product':'acer laptop', 'wk1_qty':3, 'wk1_amount':300,
    'wk1_cost':210, 'wk2_qty':3, 'wk2_amount':300,
    'wk2_cost':210, 'wk3_qty':0, 'wk3_amount':0,
    'wk3_cost':0, 'wk4_qty':5, 'wk4_amount':550,
    'wk4_cost':375, 'wk5_qty':5, 'wk5_amount':500,
    'wk5_cost':375, 'product_price':75}])

当除法为零时,问题就出现了。因此,为了缩短(或解决)这一问题,我们可以尝试以下方法:

try:
    Product_price = wk_cost/wk_qty
except ZeroDivisionError:
    Product_price = 0

你能展示一下你是如何得到iPhone11的产品价格32的吗?@Sergedegossondevarenes这是用最近一周的非零成本除以其数量wk4_成本/wk4_数量160/5得到的。好的,你描述了预期的行为。你在哪里挣扎?你的具体编程问题是什么?请展示您的尝试。我不完全确定如何处理它,我仍在阅读如何使用lambda函数在列的行上迭代。我只需要一列来保存最新的商品价格,如何将其应用到jupyter笔记本上