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

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 |

相关推荐
2501_947575802 小时前
计算机毕业设计之jsp开山车行二手车交易系统
java·开发语言·hadoop·python·信息可视化·django·课程设计
骑士雄师2 小时前
java面试题 4:鉴权
java·开发语言
Byron__3 小时前
AI学习_06_短期记忆与长期记忆
人工智能·python·学习
时间的拾荒人3 小时前
C语言字符函数与字符串函数完全指南
c语言·开发语言
2501_948106914 小时前
计算机毕业设计之基于jsp教科研信息共享系统
java·开发语言·信息可视化·spark·课程设计
取经蜗牛4 小时前
Python 第一阶段完全指南:从零到第一个实用工具
开发语言·python
创世宇图4 小时前
【Python工程化实战】OpenTelemetry 在 Python 中的全链路追踪落地:从埋点到可视化的完整实战指南
python·分布式链路追踪·性能监控·opentelemetry·微服务可观测性
dog2505 小时前
从重尾到截断流量模型的演进
开发语言·php
qq_401700415 小时前
Qt QSS 完全入门写出漂亮界面以及解决样式不生效问题
开发语言·qt
许彰午5 小时前
72_Python爬虫基础BeautifulSoup
爬虫·python·beautifulsoup