1、原始数据准备
样例数据准备
|-----|-----|-------|--------|---------|---------|----|----|------|-------|-------|
| 地区 | 1m³ | 2-5m³ | 6-10m³ | 11-20m³ | 21-40m³ | 地区 | 单价 | 计费单位 | 费用最小值 | 费用最大值 |
| 北京 | 130 | 120 | 110 | 100 | 90 | | | | | |
| 天津 | 130 | 120 | 110 | 100 | 90 | | | | | |
| 石家庄 | 130 | 120 | 110 | 100 | 90 | | | | | |
| 保定 | 140 | 130 | 120 | 110 | 100 | | | | | |
| 张家口 | 170 | 150 | 130 | 120 | 110 | | | | | |
| 邢台 | 140 | 120 | 110 | 100 | 90 | | | | | |
| 邯郸 | 140 | 130 | 120 | 110 | 100 | | | | | |
| 衡水 | 140 | 130 | 120 | 110 | 100 | | | | | |
| 沧州 | 130 | 120 | 110 | 100 | 90 | | | | | |
| 廊坊 | 150 | 130 | 120 | 100 | 90 | | | | | |
| 唐山 | 130 | 120 | 110 | 100 | 90 | | | | | |
| 秦皇岛 | 140 | 130 | 120 | 100 | 90 | | | | | |
| 承德 | 170 | 150 | 130 | 120 | 110 | | | | | |
#2、python脚本编写,新建app.py文件,内容如下:
python
import pandas as pd
import numpy as np
# 读取原始 Excel 文件
df = pd.read_excel('shanghaiTrailerFee.xlsx')
print(df.head())
# 选择第二行开始的数据,并每行复制 5 次
df_copy = pd.DataFrame(np.repeat(df.iloc[0:, :].values, 5, axis=0), columns=df.columns)
print('************************')
# print(df_copy.shape[0])
# print(df_copy.head())
totalRow = df_copy.shape[0]
print("总计行数为",totalRow)
for i in range(totalRow):
if i % 5 == 0 :
df_copy.values[i][6] = df_copy.values[i][0]
df_copy.values[i][7] = df_copy.values[i][1]
df_copy.values[i][8] = 'CBM'
df_copy.values[i][9] = 0
df_copy.values[i][10] = 1
if i % 5 == 1 :
df_copy.values[i][6] = df_copy.values[i][0]
df_copy.values[i][7] = df_copy.values[i][2]
df_copy.values[i][8] = 'CBM'
df_copy.values[i][9] = 2
df_copy.values[i][10] = 5
if i % 5 == 2 :
df_copy.values[i][6] = df_copy.values[i][0]
df_copy.values[i][7] = df_copy.values[i][3]
df_copy.values[i][8] = 'CBM'
df_copy.values[i][9] = 6
df_copy.values[i][10] = 10
if i % 5 == 3 :
df_copy.values[i][6] = df_copy.values[i][0]
df_copy.values[i][7] = df_copy.values[i][4]
df_copy.values[i][8] = 'CBM'
df_copy.values[i][9] = 11
df_copy.values[i][10] = 20
if i % 5 == 4 :
df_copy.values[i][6] = df_copy.values[i][0]
df_copy.values[i][7] = df_copy.values[i][5]
df_copy.values[i][8] = 'CBM'
df_copy.values[i][9] = 21
df_copy.values[i][10] = 40
df_copy.drop(df_copy.columns[[0,1,2,3,4,5]], axis=1, inplace=True)
# 将处理后的数据保存到新的Excel文件中
df_copy.to_excel('new_shanghaiTrailerFee.xlsx', index=False)
3、执行python app.py
4、效果展示
|-----|-----|------|-------|-------|
| 地区 | 单价 | 计费单位 | 费用最小值 | 费用最大值 |
| 北京 | 130 | CBM | 0 | 1 |
| 北京 | 120 | CBM | 2 | 5 |
| 北京 | 110 | CBM | 6 | 10 |
| 北京 | 100 | CBM | 11 | 20 |
| 北京 | 90 | CBM | 21 | 40 |
| 天津 | 130 | CBM | 0 | 1 |
| 天津 | 120 | CBM | 2 | 5 |
| 天津 | 110 | CBM | 6 | 10 |
| 天津 | 100 | CBM | 11 | 20 |
| 天津 | 90 | CBM | 21 | 40 |
| 石家庄 | 130 | CBM | 0 | 1 |
| 石家庄 | 120 | CBM | 2 | 5 |
| 石家庄 | 110 | CBM | 6 | 10 |
| 石家庄 | 100 | CBM | 11 | 20 |
| 石家庄 | 90 | CBM | 21 | 40 |
| 保定 | 140 | CBM | 0 | 1 |
| 保定 | 130 | CBM | 2 | 5 |
| 保定 | 120 | CBM | 6 | 10 |
| 保定 | 110 | CBM | 11 | 20 |
| 保定 | 100 | CBM | 21 | 40 |
| 张家口 | 170 | CBM | 0 | 1 |
| 张家口 | 150 | CBM | 2 | 5 |
| 张家口 | 130 | CBM | 6 | 10 |
| 张家口 | 120 | CBM | 11 | 20 |
| 张家口 | 110 | CBM | 21 | 40 |
| 邢台 | 140 | CBM | 0 | 1 |
| 邢台 | 120 | CBM | 2 | 5 |
| 邢台 | 110 | CBM | 6 | 10 |
| 邢台 | 100 | CBM | 11 | 20 |
| 邢台 | 90 | CBM | 21 | 40 |
| 邯郸 | 140 | CBM | 0 | 1 |
| 邯郸 | 130 | CBM | 2 | 5 |
| 邯郸 | 120 | CBM | 6 | 10 |
| 邯郸 | 110 | CBM | 11 | 20 |
| 邯郸 | 100 | CBM | 21 | 40 |
| 衡水 | 140 | CBM | 0 | 1 |
| 衡水 | 130 | CBM | 2 | 5 |
| 衡水 | 120 | CBM | 6 | 10 |
| 衡水 | 110 | CBM | 11 | 20 |
| 衡水 | 100 | CBM | 21 | 40 |
| 沧州 | 130 | CBM | 0 | 1 |
| 沧州 | 120 | CBM | 2 | 5 |
| 沧州 | 110 | CBM | 6 | 10 |
| 沧州 | 100 | CBM | 11 | 20 |
| 沧州 | 90 | CBM | 21 | 40 |
| 廊坊 | 150 | CBM | 0 | 1 |
| 廊坊 | 130 | CBM | 2 | 5 |
| 廊坊 | 120 | CBM | 6 | 10 |
| 廊坊 | 100 | CBM | 11 | 20 |
| 廊坊 | 90 | CBM | 21 | 40 |
| 唐山 | 130 | CBM | 0 | 1 |
| 唐山 | 120 | CBM | 2 | 5 |
| 唐山 | 110 | CBM | 6 | 10 |
| 唐山 | 100 | CBM | 11 | 20 |
| 唐山 | 90 | CBM | 21 | 40 |
| 秦皇岛 | 140 | CBM | 0 | 1 |
| 秦皇岛 | 130 | CBM | 2 | 5 |
| 秦皇岛 | 120 | CBM | 6 | 10 |
| 秦皇岛 | 100 | CBM | 11 | 20 |
| 秦皇岛 | 90 | CBM | 21 | 40 |
| 承德 | 170 | CBM | 0 | 1 |
| 承德 | 150 | CBM | 2 | 5 |
| 承德 | 130 | CBM | 6 | 10 |
| 承德 | 120 | CBM | 11 | 20 |
| 承德 | 110 | CBM | 21 | 40 |