综合运用pandas和xlsxwriter解决所需问题(读取表格、更改数据、保存到新表格),附加一些注意事项

目录

(1)声明:

(2)问题:

(4)思路:

(5)代码实现:(附加注释)

(6)注意事项:


(1)声明:

不局限于下述问题,可以根据自身情况加以修改。

(2)问题:

如下图所示,需要在指定的位置插入数字“0”,并实现逐行插入。

 


提前看结果图:


(4)思路:

读取表格>>>根据关键词(标题)确定需要更改的位置>>>创建新表格>>>保存更改后的数据

(5)代码实现:(附加注释)

import xlsxwriter
import pandas as pd


# ------------------------------------读取表格并更改数据------------------------------------ #
df = pd.read_excel(r'G:\CSDN\python\Office_skills\demo.xls')  # 读取xlsx中第一个sheet

number = df.index.values
title = df.columns.values
print("行序号:{}".format(number))  # 打印所有行的序号
print("列标题:{}".format(title))  # 打印所有列的标题

# 定位关键词1的位置
i = 0
for i in range(len(title)):
    if title[i] == "Flying":
        i += 1
        print(i)
        break

# 定位关键词2的位置
ii = 0
for ii in range(len(title)):
    if title[ii] == "Bulldog":
        ii += 1
        print(ii)
        break

data2 = df.values  # list形式,读取表格所有数据
print("所有数据: \n", data2)

i = i - 1
ii = ii - 1
values = []
values1 = []

# 更改表格内容(此处是在指定位置插入数字"0")
for j in range(len(number)):
    # print(j, i)
    value = data2[j][i]
    value = str(value)
    values.append("%s%s%s" % (value[0:1], "0", value[1:5]))
    value1 = data2[j][ii]
    value1 = str(value1)
    values1.append("%s%s%s" % (value1[0:1], "0", value1[1:3]))

print(values)
print(values1)

# ------------------------------------创建新的表格并保存------------------------------------ #
workbook = xlsxwriter.Workbook(r'G:\CSDN\python\Office_skills\result.xlsx')  # 创建表格
worksheet_A = workbook.add_worksheet('sheet1')  # 添加表格中的一个工作表('sheet1')

str_format = {'align': 'center',  # 水平位置设置:居中
              'valign': 'vcenter',  # 垂直位置设置,居中
              'font_size': 11,  # '字体大小设置'
              }

str_format = workbook.add_format(str_format)  # 添加格式

# write(坐标、内容、格式)
worksheet_A.write('B1', 'Flying', str_format)
worksheet_A.write('D1', 'Bulldog', str_format)

for i in range(len(values)):
    # 写入内容: write(坐标、内容、格式)
    worksheet_A.write(i + 1, 1, values[i], str_format)
    worksheet_A.write(i + 1, 3, values1[i], str_format)

workbook.close()  # 关闭工作薄,并把更改的信息存储到指定的文件中,此处无错误,错误的是路径有问题!!!

   >>>运行结果

行序号:[0 1 2 3 4 5 6 7 8 9]
列标题:['序号' 'Flying' 'Bulldog']
2
3
所有数据: 
 [[    1 12138   666]
 [    2 12138   666]
 [    3 12138   666]
 [    4 12138   666]
 [    5 12138   666]
 [    6 12138   666]
 [    7 12138   666]
 [    8 12138   666]
 [    9 12138   666]
 [   10 12138   666]]
['102138', '102138', '102138', '102138', '102138', '102138', '102138', '102138', '102138', '102138']
['6066', '6066', '6066', '6066', '6066', '6066', '6066', '6066', '6066', '6066'

(6)注意事项:

  • pandas读取xlsx文件时,可能出现错误,这是需要另存为xls文件
  • worksheet.close()报错时,大概率不是此处的错误,可能是路径的问题
  • 写好内容格式后,一定要记得添加格式
  • 在字符串的指定位置插入内容,这个思想很重要,具体实现见上述代码

  >>>如有疑问,欢迎评论区一起探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flying Bulldog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值