使用 Pandas 更改 Excel 工作表的名称

3
import pandas as pd
import numpy as np
df = pd.read_excel(r"C:\Users\venkagop\Subbu\promo validation testing\P 02. Promotions-UK C1.xls")
df = df[['Promotions', 'Promotions: AE', 'Promotions: Anaplan ID', 'Promotions: Is Optima Scenario?', 'Promotions: SIDs', 'Set Inactive?', 'Start Date', 'End Date', 'Promo Period', 'Promo Optima Status', 'Change Promo Status']]
df = df[(df['Promo Period'] == 'FY1819')]
df = df[(df['Set Inactive?'] == 0 ) & (df['Promotions: Is Optima Scenario?'] == 1)]
df.dropna(subset=['Promotions: SIDs'], inplace=True)
df['Optima vs Anaplan Promo Status Validation'] = ""
df['Optima vs Anaplan Promo Status Validation'] = np.where(df['Promo Optima Status'] == df['Change Promo Status'], 'True', 'False')
df.to_excel(r"C:\Users\venkagop\Subbu\mytest.xls", index = False)
#after this i want to change sheeet1 name to some other name#
1个回答

10
有两种方法可以解决这个问题。
方法一:
从一开始就使用“sheet_name”参数,将Excel文件保存到正确的工作表名称中。
import pandas as pd

writer = pd.ExcelWriter(r'C:\Users\venkagop\Subbu\mytest.xls')
df.to_excel(writer, sheet_name='MySheetName', index=False)
writer.close()

方法二

如果方法一不可行,可以在后期使用openpyxl更改工作表名称。这种方法的优点是您可以避免再次将pandas数据帧转换为Excel格式的成本。

import openpyxl

file_loc = r'C:\Users\venkagop\Subbu\mytest.xls'

ss = openpyxl.load_workbook(file_loc)
ss_sheet = ss.get_sheet_by_name('Sheet1')
ss_sheet.title = 'MySheetName'
ss.save(file_loc)

1
谢谢。这对我有用,谢谢。还需要帮助,我想创建另一个表格。 - subbu
df['Optima vs Anaplan Promo Status Validation'] = np.where(df['Promo Optima Status'] == df['Change Promo Status'], 'True', 'False') - subbu
如果为假,则所有数据需要填充到另一个工作表中。 - subbu
@subbu,那将是一个不同的问题,最好单独提出来问。然而,我的建议是:使用pandas索引/切片将您的数据拆分为2个数据帧。然后通过df1.to_excel(writer, 'mysheet1') / df2.to_excel(writer, 'mysheet2')保存到2个不同的工作表中。 - jpp
1
似乎API发生了变化,现在需要使用writer.close()而不是writer.save() - undefined
@Joe,谢谢 - 已更新。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接