我有几列的df,索引是product_code,焦点列是NCM代码

我想在此数据框中创建一个新列(称为“利润率”),以根据其NCM代码确定给定产品代码的利润率

NCM码有8位数字...

当8位数的第一个数字为3时,新创建的列将返回40%

当前两位数字为45时,新创建的列将返回30%

当前三位数为565时,新创建的列将返回25%

当前4位数字是1245时,新创建的列将返回20%

否则,它将返回15%

考虑当前简化的DF:

product_code   NCM code
    AA         30000000
    BB         45000000
    CC         56500000
    DD         12450000
    EE         99999999


所需结果:

product_code   NCM code    Profit Margin
    AA         30000000        40%
    BB         45000000        30%
    CC         56500000        25%
    DD         12450000        20%
    EE         99999999        15%


我试图编写自己的函数,并很沮丧地将其应用于创建新列。

谢谢!

最佳答案

这很尴尬,但不可撤销:

import numpy as np
df['Profit Margin'] = np.where(df['NCM code'].str[0]=='8', 0.4,
                      np.where(df['NCM code'].str[:2]=='45', 0.3,
                      np.where(df['NCM code'].str[:3]=='565', 0.25,
                      np.where(df['NCM code'].str[:4]=='1245', 0.2, 0.15))))
#  product_code  NCM code  Profit Margin
#0           AA  30000000           0.15
#1           BB  45000000           0.30
#2           CC  56500000           0.25
#3           DD  12450000           0.20
#4           EE  99999999           0.15

关于python - Pandas ,根据产品分类确定利润率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53464120/

10-12 18:19