Pandas:搜索多个列并返回具有找到的值的列

2024-09-27 20:19:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着对我们的采购订单进行审核,我创建了这个数据框(下面是一个csv示例):

ProductName,Qty,LineCost,BuyQty1,BuyQty1Cost,BuyQty2,BuyQty2Cost,BuyQty3,BuyQty3Cost

SIGN2WH,48,40.63,5,43.64,48,40.63,72,39.11
SIGN2BK,144,39.11,5,43.64,48,40.63,72,39.11

在我的数据源中,根据购买的数量,有些产品会得到不同的中断。因此,列BuyQty1和{}。Qty和{}是我需要审计的值。所以,我想做的是:

  1. 检查与列上的值对应的数量中断 Qty。示例a 48的Qty表示中断是BuyQty2, 相应的价格应该是BuyQty2Cost

  2. 然后添加一个比率为LineCost/BuyQty2Cost的列。在SIGN2BK(第二行)的情况下,它将是BuyQty3Cost

我该如何应对?在


Tags: csv数据订单示例数量qtyproductnamebuyqty1
1条回答
网友
1楼 · 发布于 2024-09-27 20:19:44
import pandas as pd

def calculate_break_level(row):
    if row.Qty >= row.BuyQty3:
        return row.BuyQty3Cost
    elif row.Qty >= row.BuyQty2:
        return row.BuyQty2Cost
    else:
        return row.BuyQty1Cost

# apply the function row-by-row by specifying axis=1
# the newly produced Line_Cost is in the last column.
df['Line_Cost'] = df.apply(calculate_break_level, axis=1)

Out[58]: 
  ProductName  Qty  LineCost  BuyQty1  BuyQty1Cost  BuyQty2  BuyQty2Cost  BuyQty3  BuyQty3Cost  Line_Cost
0     SIGN2WH   48     40.63        5        43.64       48        40.63       72        39.11      40.63
1     SIGN2BK  144     39.11        5        43.64       48        40.63       72        39.11      39.11

相关问题 更多 >

    热门问题