我有几列的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/