Python操作Excel实战:Excel行转列

# 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文件,内容如下:

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

你可能感兴趣的:(python,python,excel,开发语言)