一、需求
现有一个维表,包含以下字段:
国家 货物类型 重量上限2 重量下限2 运费 挂号费
'''
英国 普货类 0 2 61 16
英国 普货类 2 20 61 16
英国 内置电池 0 2 83 16
英国 内置电池 2 20 78 16
德国 普货类 0 0.4 63 18
德国 普货类 0.4 2 57 21
德国 普货类 2 30 57 21
德国 内置电池 0 2 72 21
德国 内置电池 2 30 72 21
法国 普货类 0 0.4 64 20
法国 普货类 0.4 2 59 23
法国 普货类 2 30 59 23
法国 内置电池 0 0.4 77 20
法国 内置电池 0.4 2 77 23
法国 内置电池 2 30 75 23
西班牙 普货类 0 2 59 18
西班牙 普货类 2 30 59 18
西班牙 内置电池 0 2 72 18
西班牙 内置电池 2 30 76 18
意大利 普货类 0 2 60 23
意大利 普货类 2 30 65 23
意大利 内置电池 0 2 80 23
意大利 内置电池 2 30 82 23
美国 普货类 0 0 94 18
美国 普货类 0 0 94 18
美国 普货类 0 0 94 16
美国 普货类 0 1 94 16
美国 普货类 1 2 94 9
美国 普货类 2 30 91 9
美国 内置电池 0 0 118 18
美国 内置电池 0.1 0 116 18
美国 内置电池 0.2 0 113 18
美国 内置电池 0.45 1 113 18
美国 内置电池 1 2 113 9
美国 内置电池 2 30 108 9
'''
要求计算:给定国家、货物类型、重量,计算应付运费、挂号费。
二、实操
直接上代码!!!
##### 快递运费匹配 #####
import pandas as pd
import os
os.chdir(r'C:\Users\111\Desktop')
df = pd.read_excel('money.xlsx')
def yunfei_count(country, thing_type, weight):
is_or_not = (df['国家'] == country) & (df['货物类型'] == thing_type) & (df['重量上限2'] <= weight) & (df['重量下限2'] >= weight)
return df.loc[is_or_not, '运费'].values[0], df.loc[is_or_not, '挂号费'].values[0]
a, b = yunfei_count('意大利', '内置电池', 1)
print(f'本次快递运费为:{a}\n本次快递挂号费为:{b}')
'''
本次快递运费为:80
本次快递挂号费为:23
'''