#python #pandas
#python #панды
Вопрос:
У меня есть данные с количеством, суммой и стоимостью еженедельных продаж, и я хочу узнать себестоимость для каждой строки продукта, разделив количество проданных за неделю на стоимость, однако возможно, что последняя строка имеет нулевые значения, поэтому я хочу пропустить ее, если она имеет нулевое значение, и использоватьпредыдущая неделя для расчета стоимости или до тех пор, пока не будут найдены ненулевые значения и вычислена стоимость товара (wkx_cost / wkx_amount). Также обратите внимание, что цена продукта могла меняться в течение нескольких недель, поэтому мне нужна стоимость за последнюю неделю, но если она недоступна, попробуйте рассчитать себестоимость товара за предыдущую неделю.
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}])
Комментарии:
1. Можете ли вы показать, как вы получаете цену продукта 32 для iPhone11?
2. @SergedeGossondeVarennes это было получено путем деления ненулевой стоимости за последнюю неделю на ее количество wk4_cost / wk4_qty 160/5.
3. Хорошо, вы описали ожидаемое поведение. Где вы боретесь и каков ваш конкретный вопрос программирования? Пожалуйста, покажите свои попытки.
4. я не совсем уверен, как к этому подойти, я все еще читаю, как использовать лямбда-функции для перебора строк столбцов.
Ответ №1:
Проблема возникает, когда есть деление на ноль. Итак, чтобы сократить это (или справиться с этим), можно было бы попробовать это:
try:
Product_price = wk_cost/wk_qty
except ZeroDivisionError:
Product_price = 0
Комментарии:
1. мне нужен только один столбец для хранения последней цены товара, как мне применить это к ноутбуку jupyter