相关疑难解决方法(0)

如何使用Pandas在现有的Excel文件中保存新工作表?

我想使用excel文件来存储用python详细说明的数据.我的问题是我无法将图纸添加到现有的Excel文件中.在这里,我建议使用示例代码来解决此问题

import pandas as pd
import numpy as np

path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"

x1 = np.random.randn(100, 2)
df1 = pd.DataFrame(x1)

x2 = np.random.randn(100, 2)
df2 = pd.DataFrame(x2)

writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
Run Code Online (Sandbox Code Playgroud)

此代码将两个DataFrame保存为两个表,分别名为"x1"和"x2".如果我创建两个新的DataFrame并尝试使用相同的代码添加两个新工作表'x3'和'x4',原始数据将丢失.

import pandas as pd
import numpy as np

path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"

x3 = np.random.randn(100, 2)
df3 = pd.DataFrame(x3)

x4 = np.random.randn(100, 2)
df4 = pd.DataFrame(x4)

writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df3.to_excel(writer, sheet_name = 'x3')
df4.to_excel(writer, sheet_name …
Run Code Online (Sandbox Code Playgroud)

python pandas openpyxl xlsxwriter

51
推荐指数
7
解决办法
7万
查看次数

使用python pandas使用新数据框附加现有excel表

我目前有这个代码.它完美地运作.

它循环遍历文件夹中的excel文件,删除前两行,然后将它们保存为单独的excel文件,并将文件作为附加文件保存在循环中.

目前,每次运行代码时附加的文件都会覆盖现有文件.

我需要将新数据附加到已经存在的Excel工作表的底部('master_data.xlsx)

dfList = []
path = 'C:\\Test\\TestRawFile' 
newpath = 'C:\\Path\\To\\New\\Folder'

for fn in os.listdir(path): 
  # Absolute file path
  file = os.path.join(path, fn)
  if os.path.isfile(file): 
    # Import the excel file and call it xlsx_file 
    xlsx_file = pd.ExcelFile(file) 
    # View the excel files sheet names 
    xlsx_file.sheet_names 
    # Load the xlsx files Data sheet as a dataframe 
    df = xlsx_file.parse('Sheet1',header= None) 
    df_NoHeader = df[2:] 
    data = df_NoHeader 
    # Save individual dataframe
    data.to_excel(os.path.join(newpath, fn))

    dfList.append(data) 

appended_data = …
Run Code Online (Sandbox Code Playgroud)

python excel for-loop append pandas

17
推荐指数
4
解决办法
4万
查看次数

如何在不破坏openpyxl公式的情况下写入现有的excel文件?

当您以下列方式从Python写入excel文件时:

import pandas
from openpyxl import load_workbook

book = load_workbook('Masterfile.xlsx')
writer = pandas.ExcelWriter('Masterfile.xlsx') 
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])

writer.save()
Run Code Online (Sandbox Code Playgroud)

公式和现有工作表中图表的链接将保存为值.

如何覆盖此行为以保留公式和图表链接?

python excel pandas openpyxl

9
推荐指数
1
解决办法
8299
查看次数

使用循环使用 Dataframe Pandas 创建 Excel 工作表

我正在开发这个函数,它可以抓取网站上的 Fantasy Football 信息并将其写入 Excel 文件。最终,我希望在 Excel 工作簿的单独工作表中包含每周的信息。

下面发布的代码可以完美运行,直到我想将其写入 Excel 工作簿。该工作簿最终只有第 17 周的数据。似乎 pandas ExcelWriter 每当我真的希望它每次添加一个工作表时都会覆盖该工作表。

我在网上找不到任何有关在 pandas ExcelWriter 中创建带有循环的工作表的信息,所以我不完全确定它是否可以按照我想要的方式完成。

import bs4 as bs
import urllib.request
import pandas as pd
from pandas import ExcelWriter    

for week in range(1,18):
    #IGNORE MOST OF THIS STUFF BELOW BECAUSE IT WORKS AS IS
    source = urllib.request.urlopen('http://fftoday.com/stats/playerstats.php?Season=2015&GameWeek='+str(week)+'&PosID=10&LeagueID=1').read()
    soup = bs.BeautifulSoup(source, 'lxml')

    table = soup.find('table', width='100%', border='0', cellpadding='2', cellspacing='1')
    table_rows = table.find_all('tr')

    player_data = {}

    for tr in table_rows:
       td = tr.find_all('td')
       row = [i.text for …
Run Code Online (Sandbox Code Playgroud)

python excel python-3.x pandas

7
推荐指数
2
解决办法
3万
查看次数

使用方法/函数格式化xlsx writer

我正在尝试动态设置和编写excel文件.这是我的代码

import pandas as pd
import copy

class OutputWriter(object):

    def __init__(self, fmt_func, sheet_name='data'):
        '''
        Initializing...
        '''
        # NOTICE: Initialising with path set None since I do not know path yet
        wrt = pd.ExcelWriter(None, engine='xlsxwriter')
        self._writer = fmt_func(wrt, sheet_name)
        self._sheet_name = sheet_name

    def save(self, df, o_path):
        '''
        Save the file to a path
        '''
        # setting path in writer before saving
        self._writer.path = o_path
        df.to_excel(self._writer, sheet_name=self._sheet_name)
        self._writer.save()

# Change first row color to blue
def fmt_func_blue(wrt, sheet_name):
    # ERROR Cannot clone …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas xlsxwriter

7
推荐指数
1
解决办法
575
查看次数

将 Pandas DataFrame 写入 Excel:如何自动调整列宽

我正在尝试将一系列 Pandas DataFrames 写入 Excel 工作表,以便:

  1. 工作表的现有内容不会被覆盖或擦除,并且
  2. 调整 Excel 列宽以适应列条目的长度(这样我就不必在 Excel 中手动执行此操作)。

对于 1),我以@MaxU 编写的辅助函数的形式找到了一个很好的解决方案:如何在不覆盖数据的情况下写入现有的 excel 文件(使用 Pandas)?. 对于 2) 我在这里找到了一个很好的解决方案。但是当我尝试将这些解决方案放在一起时,列宽根本不会改变。这是我的完整代码:

import pandas as pd
import os
from openpyxl import load_workbook

def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None,
                       truncate_sheet=False, 
                       **to_excel_kwargs):
    """
    Append a DataFrame [df] to existing Excel file [filename]
    into [sheet_name] Sheet.
    If [filename] doesn't exist, then this function will create it.

    @param filename: File path or existing ExcelWriter
                     (Example: '/path/to/file.xlsx')
    @param df: DataFrame to save to …
Run Code Online (Sandbox Code Playgroud)

python excel dataframe pandas openpyxl

7
推荐指数
1
解决办法
505
查看次数

将值写入python中pandas中工作表中的特定单元格

我有一张excel表,在某些单元格中已有一些值.

例如: -

        A      B      C      D
1      val1   val2          val3
2             valx   valy        
Run Code Online (Sandbox Code Playgroud)

我想要大熊猫写入特定的细胞而不接触任何其他细胞,薄片等

这是我试过的代码.

import pandas as pd
from openpyxl import load_workbook

df2 = pd.DataFrame({'Data': [13, 24, 35, 46]})
book = load_workbook('b.xlsx')
writer = pd.ExcelWriter('b.xlsx', engine='openpyxl')

df2.to_excel(writer, "Sheet1", startcol=7,startrow=6)

writer.save()
Run Code Online (Sandbox Code Playgroud)

但是,此代码会删除较旧的单元格值.

我已经提到: - 如何写入现有的excel文件而不覆盖数据(使用pandas)? 但这个解决方案不起作用.

python excel pandas

6
推荐指数
2
解决办法
3万
查看次数

Python如何使用ExcelWriter写入现有工作表

我正在尝试使用ExcelWriter将一些信息写入/添加到包含多个工作表的工作簿中.我第一次使用该函数时,我正在创建包含一些数据的工作簿.在第二个调用中,我想在不同位置的工作簿中将一些信息添加到所有工作表中.

def Out_Excel(file_name,C,col): 
    writer = pd.ExcelWriter(file_name,engine='xlsxwriter')
    for tab in tabs:    # tabs here is provided from a different function that I did not write here to keep it simple and clean
        df = DataFrame(C)    # the data is different for different sheets but I keep it simple in this case
        df.to_excel(writer,sheet_name = tab, startcol = 0 + col, startrow = 0)
    writer.save()
Run Code Online (Sandbox Code Playgroud)

在主代码中,我使用不同的col调用此函数两次,以在不同位置打印出我的数据.

Out_Excel('test.xlsx',C,0)
Out_Excel('test.xlsx',D,10)
Run Code Online (Sandbox Code Playgroud)

但问题是这样做输出只是函数的第二次调用,就像函数覆盖整个工作簿一样.我想我需要加载本案例中已经存在的工作簿?有帮助吗?

python pandas xlsxwriter

5
推荐指数
2
解决办法
3万
查看次数

将 Pandas DataFrame 附加到现有 Excel 文档

根据https://github.com/pandas-dev/pandas/pull/21251/files/09e5b456e1af5cde55f18f903ab90c761643b05a,我们应该能够将 DataFrame 附加到新的 XLSX 表。

根据文档,我尝试了以下操作:

>>> import pandas as pd
>>>                
... d1 = pd.DataFrame({"A":['Bob','Joe', 'Mark'], 
...                "B":['5', '10', '20']})
>>> d2 = pd.DataFrame({"A":['Jeffrey','Ann', 'Sue'], 
...                "B":['1', '2', '3']})
>>> 
>>> # Create XLSX document for ticker
... writer = pd.ExcelWriter('test.xlsx',engine='openpyxl')
>>> d1.to_excel(writer,sheet_name='d1')
>>> writer.save()
>>> 
>>> writer = pd.ExcelWriter('test.xlsx',engine='openpyxl', mode='a')
>>> d2.to_excel(writer,sheet_name='d2')
>>> writer.save()
>>> 
>>> pd.__version__
'0.23.4'     # Just updated this per a comment
>>> 
>>> 
Run Code Online (Sandbox Code Playgroud)

结果是一个名为“test.xlsx”的工作簿,带有一个选项卡“d2”。

如何防止工作簿/工作表表单被覆盖?

python excel pandas xlsxwriter

5
推荐指数
1
解决办法
2万
查看次数

将 pandas 数据框附加到 Excelsheet,而不是覆盖它

我想将 panda 数据框的内容附加df到 Excel 表中。

这就是我所做的;

df.to_excel(excel_writer="target.xlsx", sheet_name="sheet_1")
Run Code Online (Sandbox Code Playgroud)

这段代码的问题是它覆盖了target.xlsx. target.xlsx结果我丢失了所有旧数据。我想要代码做的是附加而不是覆盖 Excel 工作表。

我正在使用Python 3.7。

python excel dataframe python-3.x pandas

5
推荐指数
1
解决办法
5345
查看次数

标签 统计

pandas ×10

python ×10

excel ×7

xlsxwriter ×4

openpyxl ×3

python-3.x ×3

dataframe ×2

append ×1

for-loop ×1