首页 > 编程问答 >如何使用 Pandas 解析函数处理 Excel 中的合并单元格?

如何使用 Pandas 解析函数处理 Excel 中的合并单元格?

时间:2024-07-28 13:15:41浏览次数:14  
标签:python excel pandas

我有一个包含合并的列和行的 Excel 文件,我想读取该 Excel 文件并解析它以将其转换为 DataFrame。

这只是所发生情况的一个小示例,因为我拥有的真实数据非常多很大,有很多桌子。 这就是 Excel 文件的样子:

Excel File

当我尝试时 xl = pd.read_excel('file') 我得到了这个:

Python

如您所见,合并的行给了我 NaN,合并的列给了我“未命名:”。

当我尝试解析函数(我用它来代替 read_excel)

df=[]
xls = pd.ExcelFile('/content/test.xlsx')
entire_sheet = xls.parse(sheet_name='Feuille 1')
df.append(entire_sheet)

我得到这个:

Python 所以 NaN 行和未命名列有同样的问题。

我希望 Python 中的 DF 看起来与 Excel 工作表完全一样 我应该怎么办?


可以使用 pandas 中的 read_excel 函数和 header index_col 参数来读取 Excel 文件并将合并的单元格处理为标题。然后,可以使用 fillna(method='ffill') 来填充合并单元格中的缺失值。

以下是使用提供的示例的代码:

import pandas as pd

# 读取 Excel 文件,将第一行和第一列作为标题
df = pd.read_excel('file.xlsx', header=[0, 1], index_col=[0, 1])

# 使用前向填充填充缺失值
df = df.fillna(method='ffill')

print(df)

这将生成以下 DataFrame:

                Unnamed: 0_level_1     Valeur 1                
                                       Param 1   Param 2  Param 3
groupe A   date                             
           2020-01-01 00:00:00          1        4         7
           2020-01-02 00:00:00          2        5         8
           2020-01-03 00:00:00          3        6         9
groupe B   date                             
           2020-01-01 00:00:00         10       13        16
           2020-01-02 00:00:00         11       14        17
           2020-01-03 00:00:00         12       15        18

在这个代码中:

  • header=[0, 1] 将第一行和第二行作为多索引列标题读取。
  • index_col=[0, 1] 将第一列和第二列作为多索引行标题读取。
  • fillna(method='ffill') 使用前一个值填充每个列中的缺失值,从而有效地将合并单元格的值向下传播。

这应该可以创建一个与的 Excel 工作表结构相匹配的 DataFrame。可以根据数据的特定结构调整 header index_col fillna 参数。

标签:python,excel,pandas
From: 78792410

相关文章

  • AttributeError:'int'对象没有属性'index'(python)
    我正在Python上进行“猜单词”,但我无法弄清楚这个错误。AttributeError:'int'objecthasnoattribute'index'(python)它在线上给了我一个错误letterIndex=word.index(guess)defcheckLetter(word):blanks='_'*len(str(word))print('W......
  • 尝试在Python中使用for循环来输出大于或等于序列中的数字
    这是我的Python代码:largest_so_far=-1print('before',largest_so_far)forthe_numin[9,41,12,3,74,15]:ifthe_num>largest_so_far:largest_so_far=the_numprint(largest_so_far,'isbiggerthan',the_num)......
  • 如何在 wxPython 的 for 循环中添加文本输入框?
    我是wxPython的新手,正在开发一个带有GUI的基本程序,让用户标记图像。现在,当用户单击“导入”按钮时,他们可以选择一个目录。然后,代码使用matplotlib在for循环中显示该目录中的每个图像。但是,我不知道如何在for循环中访问用户输入。这就是该函数现在的样子:importmatplo......
  • 【Python】字母 Rangoli 图案
    一、题目YouaregivenanintegerN.YourtaskistoprintanalphabetrangoliofsizeN.(RangoliisaformofIndianfolkartbasedoncreationofpatterns.)Differentsizesofalphabetrangoliareshownbelow:#size3----c------c-b-c--c-b-a-b-c--c......
  • python 闭包、装饰器
    一、闭包:1.外部函数嵌套内部函数 2.外部函数返回内部函数 3.内部函数可以访问外部函数局部变量         闭包(Closure)是指在一个函数内部定义的函数,并且内部函数可以访问外部函数的局部变量,即使外部函数已经执行完毕,这种现象称为闭包。在Python中,闭包常常用......
  • 掌握 IPython %%time 魔法命令:高效测量代码块执行时间
    引言在编程和数据分析中,了解代码的执行时间是优化性能的关键步骤。IPython,作为一个强大的交互式计算环境,提供了多种工具来帮助用户测量和优化代码。其中,%%time魔法命令是IPython中用来测量代码块执行时间的便捷工具。本文将详细介绍%%time魔法命令的使用方法,并通过一......
  • 探索 IPython 中的 %%javascript 魔法命令:运行 JavaScript 代码的秘籍
    引言IPython是一个强大的交互式计算环境,它不仅支持Python语言,还通过各种魔法命令扩展了其功能。其中,%%javascript魔法命令是IPython扩展中一个非常有趣的特性,它允许用户在IPython环境中直接运行JavaScript代码。这对于需要在数据科学和科学计算中使用JavaScript......
  • 从混合字符串中查找 pandas 中的字符数
    我正在寻找pandasdf中混合列中字母的数量。如果字母数量超过2,请保留最接近数字的两个字母。我尝试使用下面的方法获取计数df['count']=len(re.findall('[a-zA-Z]',a['MyCOlumn']))但出现以下错误:TypeError:Expectedstringorbytes-像对象输......
  • pythonasm库分析,看看你和自学编程小学生的差距
    下面是pythonasm.asm库的源代码fromkeystoneimport*fromcapstoneimport*assembly_instructions=[]#储存汇编指令的列表#汇编指令写入列表defmov(reg1,reg2):assembly_instructions.append(f"mov{reg1},{reg2}")defdb(value):assembly_instructio......
  • 【Python系列】Python 中的垃圾收集:深入理解与实践
    ......