想要用Python实现删除空白行、插入一列、合并两列的内容,但只实现了第一步
不知道是不是pandas、openpyxl这两个库没有引用成功,还是代码的问题
但代码是显示没有问题的了,Excel文件还是没动静
生成df对象后,或许操作就直接用这个对象操作就好了,不需要单独再用 openxl 了
插入一列的,可以直接用 :df[列名] = 数据
合并两列,可以看成先通过这两列生成一个新的列,然后再把这两列删除即可
【以下回答由 GPT 生成】
在您的示例代码中,有几个问题需要解决。
#所需库
import pandas as pd
from pandas import DataFrame
from openpyxl.reader.excel import load_workbook
在这段代码中,您尝试从openpyxl.reader.excel模块中引入load_workbook函数,但是事实上,openpyxl的最新版本中已经将load_workbook函数移动到openpyxl模块中。因此,您需要更改为以下代码:
#所需库
import pandas as pd
from pandas import DataFrame
from openpyxl import load_workbook
df = pd.read_excel(io='D:成品全流程报表2023-08-29.xLsx', sheet_name='Sheet1')
df.to_excel(excel_writer='D:成品全流程报表2023-08-29.xLsx', sheet_name='sheeti', index=False)
在这段代码中,您尝试从文件路径"D:成品全流程报表2023-08-29.xLsx"读取和保存文件。但是,您需要使用正确的文件路径,以及正确的文件扩展名。因此,您需要将代码更改为以下内容:
df = pd.read_excel(io='D:/成品全流程报表2023-08-29.xlsx', sheet_name='Sheet1')
df.to_excel(excel_writer='D:/成品全流程报表2023-08-29.xlsx', sheet_name='Sheet1', index=False)
ws.insert_cols(11)
for index,row in enumerate(ws.rows):
if index == 0:
row[2].value= '装运单号&送达方编号'
else:
row[2].value = index
在这段代码中,您尝试在第11列之后插入一列,并为每一行设置特定的值。但是,事实上,插入列时,之前的列索引会自动增加。因此,您需要将代码更改为以下内容:
ws.insert_cols(12)
for index, row in enumerate(ws.iter_rows(min_row=1)):
if index == 0:
row[1].value= '装运单号&送达方编号'
else:
row[1].value = index
综上所述,下面是修正后的代码示例:
#所需库
import pandas as pd
from pandas import DataFrame
from openpyxl import load_workbook
#读取表并删除空白行
df = pd.read_excel(io='D:/成品全流程报表2023-08-29.xlsx', sheet_name='Sheet1')
df.dropna(axis=0, how='all', inplace=True)
df.to_excel(excel_writer='D:/成品全流程报表2023-08-29.xlsx', sheet_name='Sheet1', index=False)
#插入列并合并列的内容
wb = load_workbook(filename='成品全流程报表2023-08-29.XLSX')
ws = wb.worksheets[0]
ws.insert_cols(12)
for index, row in enumerate(ws.iter_rows(min_row=1)):
if index == 0:
row[1].value= '装运单号&送达方编号'
else:
row[1].value = index
wb.save(filename='D:/成品全流程报表2023-09-20.XLSX')
请注意,这些更改应该能够解决您的问题。如果仍然存在问题,请确保您的文件路径和文件扩展名是正确的,并提供任何错误消息,以便进一步调试。
【相关推荐】