Python 使用Pandas更改整个Excel工作簿中的数据

Python 使用Pandas更改整个Excel工作簿中的数据,python,pandas,Python,Pandas,我有一个很大的excel工作簿。这是我想要的 喜欢使用Python的熊猫。我正在运行python 3.4 在pandas中打开工作簿。 将一个单元格中的值更改为其他值-例如, 更改单元格A2中当前名为Jane Doe的字符串 致鲍勃·史密斯 请记住,我希望选择整个工作簿,而不仅仅是一张工作表。我的目标是进行多次大规模更改。 这是我的密码: import pandas as pd xls = pd.ExcelFile('Data.xlsx') df = xls.parse('Data') df1

我有一个很大的excel工作簿。这是我想要的 喜欢使用Python的熊猫。我正在运行python 3.4

在pandas中打开工作簿。 将一个单元格中的值更改为其他值-例如, 更改单元格A2中当前名为Jane Doe的字符串 致鲍勃·史密斯 请记住,我希望选择整个工作簿,而不仅仅是一张工作表。我的目标是进行多次大规模更改。 这是我的密码:

import pandas as pd
xls = pd.ExcelFile('Data.xlsx')
df = xls.parse('Data')
df1 = df.replace('Jane Doe', 'Bob Smith')
根据答案编辑:

艾翰,谢谢你的回复

当我尝试使用您的方法加载数据时,出现以下错误:

fs = pd.read_excel('filename.xlsx', sheetname=None)
AssertionError回溯最近的调用last 在里面 -->1 df=pd.read\u excelData.xlsx

/home/minx/anaconda3/lib/python3.4/site-packages/pandas/io/excel.py in read_excel(io, sheetname, header, skiprows, skip_footer, index_col, names, parse_cols, parse_dates, date_parser, na_values, thousands, convert_float, has_index_names, converters, engine, squeeze, **kwds)
    167     """
    168     if not isinstance(io, ExcelFile):
--> 169         io = ExcelFile(io, engine=engine)
    170 
    171     return io._parse_excel(

/home/minx/anaconda3/lib/python3.4/site-packages/pandas/io/excel.py in __init__(self, io, **kwds)
    216                 self.book = xlrd.open_workbook(file_contents=data)
    217             else:
--> 218                 self.book = xlrd.open_workbook(io)
    219         elif engine == 'xlrd' and isinstance(io, xlrd.Book):
    220             self.book = io

/home/minx/.local/lib/python3.4/site-packages/xlrd/__init__.py in open_workbook(filename, logfile, verbosity, use_mmap, file_contents, encoding_override, formatting_info, on_demand, ragged_rows)
    420                 formatting_info=formatting_info,
    421                 on_demand=on_demand,
--> 422                 ragged_rows=ragged_rows,
    423                 )
    424             return bk

/home/minx/.local/lib/python3.4/site-packages/xlrd/xlsx.py in open_workbook_2007_xml(zf, component_names, logfile, verbosity, use_mmap, formatting_info, on_demand, ragged_rows)
    792         x12sheet = X12Sheet(sheet, logfile, verbosity)
    793         heading = "Sheet %r (sheetx=%d) from %r" % (sheet.name, sheetx, fname)
--> 794         x12sheet.process_stream(zflo, heading)
    795         del zflo
    796         comments_fname = 'xl/comments%d.xml' % (sheetx + 1)
/home/minx/.local/lib/python3.4/site-packages/xlrd/xlsx.py in own_process_stream(self, stream, heading)
    532                 elem.clear() # destroy all child elements (cells)
    533             elif elem.tag == U_SSML12 + "dimension":
--> 534                 self.do_dimension(elem)
    535             elif elem.tag == U_SSML12 + "mergeCell":
    536                 self.do_merge_cell(elem)

/home/minx/.local/lib/python3.4/site-packages/xlrd/xlsx.py in do_dimension(self, elem)
    566             # print >> self.logfile, "dimension: ref=%r" % ref
    567             last_cell_ref = ref.split(':')[-1] # example: "Z99"
--> 568             rowx, colx = cell_name_to_rowx_colx(last_cell_ref)
    569             self.sheet._dimnrows = rowx + 1
    570             self.sheet._dimncols = colx + 1

/home/minx/.local/lib/python3.4/site-packages/xlrd/xlsx.py in cell_name_to_rowx_colx(cell_name, letter_value)
     89             else: # start of row number; can't be '0'
     90                 colx = colx - 1
---> 91                 assert 0 <= colx < X12_MAX_COLS
     92                 break
     93     except KeyError:

AssertionError: 

将所有表格读入字典:

dfs = pd.read_excel('filename.xlsx', sheetname=None)
创建writer对象并在字典上迭代,同时基于键值对进行替换:

repl_dict = {'a': 'b', 'c': 'd', 'e': 'f', 'g': 'h', 'i': 'j'}
writer = pd.ExcelWriter('filename.xlsx')
for sheetname, df in dfs.items():
    df = df.replace(repl_dict)
    df.to_excel(writer, sheetname, index=False)
writer.save()

您可能需要同时调整和的一些参数,如标题、索引等。

取决于您的pandas pd版本。pd.read\u excel的第二个参数可能与接受的答案拼写不同。对于0.21+版本,它是sheet_name,对于旧版本,它是sheet name。

那么您尝试了什么,为什么它不起作用?好的,为什么它不起作用?嗯,如果我知道为什么它不起作用,那么我就不会问这个问题。更改是否没有应用到工作表上?变化是否不一致?我们无法读懂你的心思。我们需要详细信息谢谢你,但是这段代码只适用于一组结果。我有数百个单元格要更新。我会这样写代码吗?dfs=pd.read_excel'filename.xlsx',sheetname=None writer=pd.ExcelWriter'filename.xlsx',dfs中的df.items:df=df.replace'a',b'df=df.replace'c',d'df=df.replace'e','f'df=df.replace'g','h'df=df.replace'i','j'df.to_ExcelWriter,sheetname,index=False writer.save我尝试了此方法,但似乎不起作用。我已更新了该案例的答案。从理论上讲,你所做的也应该奏效。它引起了一个错误吗?谢谢,但我希望搜索功能更加具体。因为我想更换的物品的顺序不正确。它是分散的。具体怎么说?这本字典没有任何顺序。我会测试它,让你知道它是如何工作的。谢谢你的帮助。