Python 将数据帧写入 excel - 检查选项卡是否存在并覆盖,否则创建
Python writing dataframe to excel - Check if tab exists and overwrite otherwise create
以下代码在第一次创建选项卡 x1 和 x2 并填充数据时工作正常。当为新数据再次执行时,它不会检查选项卡是否已经存在并添加新的错误选项卡 x11 和 x21。
import pandas as pd
import numpy as np
from openpyxl import load_workbook
import os
filename = os.path.dirname(os.path.abspath(__file__))+ '\Test_excel.xlsx' # path to current directory adding file name
book = load_workbook(filename)
writer = pd.ExcelWriter(filename, engine='openpyxl')
writer.book = book
x1 = np.random.randn(10, 4)
df1 = pd.DataFrame(x1)
x2 = np.random.randn(20, 2)
df2 = pd.DataFrame(x2)
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
如果选项卡已经存在,我需要它来覆盖现有的选项卡数据,否则创建选项卡。有什么想法吗?
您提出的问题我也即将 运行 在我自己的项目中解决。一种解决方案是查找 sheet 并使用异常 read_excel() 引发。如果没有异常,那么 sheet 存在,所以删除它。这是我刚刚在 Jupiter 上试过的代码:
from xlrd import XLRDError
try:
df = pd.read_excel( writer, sheet_name='x1')
except XLRDError:
print ("No sheet x1 found")
else:
print ("Removing sheet")
del book['x1']
找出 sheet 是否存在于 Excel 文件中的最快方法可能是使用 openpyxl 的只读模式。
from openpyxl import load_workbook
wb = load_workbook("file.xlsx", read_only=True)
'x1' in wb.sheetnames
为了完全控制数据框的使用,openpyxl 还提供了一些实用程序,可让您准确地在您想要的位置放置和格式化数据框。
以下代码在第一次创建选项卡 x1 和 x2 并填充数据时工作正常。当为新数据再次执行时,它不会检查选项卡是否已经存在并添加新的错误选项卡 x11 和 x21。
import pandas as pd
import numpy as np
from openpyxl import load_workbook
import os
filename = os.path.dirname(os.path.abspath(__file__))+ '\Test_excel.xlsx' # path to current directory adding file name
book = load_workbook(filename)
writer = pd.ExcelWriter(filename, engine='openpyxl')
writer.book = book
x1 = np.random.randn(10, 4)
df1 = pd.DataFrame(x1)
x2 = np.random.randn(20, 2)
df2 = pd.DataFrame(x2)
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
如果选项卡已经存在,我需要它来覆盖现有的选项卡数据,否则创建选项卡。有什么想法吗?
您提出的问题我也即将 运行 在我自己的项目中解决。一种解决方案是查找 sheet 并使用异常 read_excel() 引发。如果没有异常,那么 sheet 存在,所以删除它。这是我刚刚在 Jupiter 上试过的代码:
from xlrd import XLRDError
try:
df = pd.read_excel( writer, sheet_name='x1')
except XLRDError:
print ("No sheet x1 found")
else:
print ("Removing sheet")
del book['x1']
找出 sheet 是否存在于 Excel 文件中的最快方法可能是使用 openpyxl 的只读模式。
from openpyxl import load_workbook
wb = load_workbook("file.xlsx", read_only=True)
'x1' in wb.sheetnames
为了完全控制数据框的使用,openpyxl 还提供了一些实用程序,可让您准确地在您想要的位置放置和格式化数据框。