【问题标题】:Creating Excel sheets in same workbook in python在 python 中的同一工作簿中创建 Excel 工作表
【发布时间】:2019-02-11 08:20:24
【问题描述】:

在我的代码中需要一个建议。

我在工作簿的 sheet1 中有一个数据框:

column 1           column 2
000A0000              2
000B0000              3
000A0001              5
000B0001              1

我想要的结果:

在工作簿的第 2 页中:

column 1           column 2
 000A0000              2
 000A0001              5

在工作簿的第 3 页中:

column 1           column 2
 000B0000              3
 000B0001              1

我已经完成了我的编码:

import pandas as pd
file="workbook.xlxs"
print(data.sheet_names)
data=data.parse("sheet1")

substrings = ['A', 'B']

T = {x: df[df['sheet1'].str.contains(x, na=False, regex=False)] for x in substrings]

for key, var in T.items():
    var.to_excel(f'{key}.xlsx', index=False)

通过这个我可以创建新的工作簿。但我需要在同一个工作簿中创建新工作表。

任何建议都将不胜感激。

【问题讨论】:

  • 您到底想在 3 个工作表中写什么?

标签: python excel pandas


【解决方案1】:

要将工作表添加到同一个 excel 文件,请使用 openpyxl 模块,如下所示:

import pandas as pd
import openpyxl

#reading the sheet1 using read_excel
df = pd.read_excel('workbook.xlsx', sheet_name='Sheet1')

#creating pandas ExcelWriter object and loading the excel file using `openpyxl`    
df_writer = pd.ExcelWriter('workbook.xlsx', engine='openpyxl')
excel = openpyxl.load_workbook('workbook.xlsx')
df_writer.book = excel

#checking string in column 1 and writing those to respective sheets in same workbook
for string in ['A','B']:
    df[df['column 1'].str.contains(string)].to_excel(df_writer,sheet_name=string)
#saving and closing writer
writer.save()
writer.close()

【讨论】:

  • @user10309160 欢迎您!
  • 嘿,一个小问题。 for string in ['A','B'] 选择列表中的数据。如果我想要不包含这些列表的数据怎么办?请帮忙。
  • @user10309160 它不提供具有AB 的数据。它不会包含包含它们的数据。
【解决方案2】:

to_excel 不会将工作表附加到您现有的文件中:

改用 openpyxl:(如下所示)

import pandas
from openpyxl import load_workbook

book = load_workbook('path+filename_you_want_to_write_in.xlsx')
writer = pandas.ExcelWriter('path+filename_you_want_to_write_in.xlsx', engine='openpyxl') 
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df.to_excel(writer, "Sheet_name_as_per_your_choice",index=False)

writer.save()

此外,如果您想动态地阅读表格而不是特定表格:

f = pd.ExcelFile(file)
sheet_names = df.sheet_names
for i in list(sheet_names):
    df = pd.read_excel(f,i)

这将遍历您的所有工作表并提供基于工作表的数据框。

【讨论】:

  • 对不起,没有帮助。因为我想从 Sheet1 中提取数据,所以上面的代码对我没有帮助
  • 这不是确切的代码,因为我不清楚你的要求我给你一个参考,你可以在哪里实现你的代码:)
  • @user10309160 :您必须通过任何您想要的方法来阅读表格。计算您的要求,然后通过答案中的代码保存
  • @user10309160 :您可以实现添加代码以动态读取所有工作表并创建一个df。
【解决方案3】:

尝试使用 xlsxwriter 引擎。

writer = pd.ExcelWriter('<< file_name >>', engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet2')

writer.save()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多