欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas讀取excel合并單元格的正確方式(openpyxl合并單元格拆分并填充內(nèi)容)

 更新時間:2023年06月15日 09:51:37   作者:iioSnail  
Excel文件中可能包含合并單元格的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Pandas讀取excel合并單元格的正確方式,主要介紹的openpyxl合并單元格拆分并填充內(nèi)容,需要的朋友可以參考下

問題介紹(ffill填充存在的問題)

在pandas讀取excel經(jīng)常會遇到合并單元格的問題。例如:

此時使用pandas讀取到的內(nèi)容為:

如果去百度,幾乎所有人會說應(yīng)該用如下代碼:

df['班級'] = df['班級'].ffill()

這樣看起來沒問題,但是,該解決方案并不能適用于所有場景,甚至?xí)斐蓴?shù)據(jù)錯誤。

例如:

對班級和備注填充后:

孫武空本來是數(shù)據(jù)缺失,現(xiàn)在被錯誤的標(biāo)記成了掛科數(shù)據(jù)。

再例如:

對所有列填充后:

同樣存在大量數(shù)據(jù)或錯誤數(shù)據(jù)。

正確填充方式

思路:① 使用openpyxl將合并單元格拆分,生成中間文件 ② 讀取中間文件

第一步,使用如下工具類生成拆分單元格并生成中間文件:

import openpyxl
# 拆分所有的合并單元格,并賦予合并之前的值。
# 由于openpyxl并沒有提供拆分并填充的方法,所以使用該方法進(jìn)行完成
def unmerge_and_fill_cells(worksheet):
    all_merged_cell_ranges = list(
        worksheet.merged_cells.ranges
    )
    for merged_cell_range in all_merged_cell_ranges:
        merged_cell = merged_cell_range.start_cell
        worksheet.unmerge_cells(range_string=merged_cell_range.coord)
        for row_index, col_index in merged_cell_range.cells:
            cell = worksheet.cell(row=row_index, column=col_index)
            cell.value = merged_cell.value
# 讀取原始xlsx文件,拆分并填充單元格,然后生成中間臨時文件。
def unmerge_cell(filename):
    wb = openpyxl.load_workbook(filename)
    for sheet_name in wb.sheetnames:
        sheet = wb[sheet_name]
        unmerge_and_fill_cells(sheet)
    filename = filename.replace(".xls", "_temp.xls")
    wb.save(filename)
	wb.close()
    # openpyxl保存之后,再用pandas讀取會存在公式無法讀取到的情況,使用下面方式就可以了
    # 如果你的excel不涉及公式,可以刪除下面內(nèi)容
    # 原理為:使用windows打開excel,然后另存為一下
    from win32com.client import Dispatch
    xlApp = Dispatch("Excel.Application")
    xlApp.Visible = False
    xlBook = xlApp.Workbooks.Open(str(Path(".").absolute() / filename))  # 這里必須填絕對路徑
    xlBook.Save()
    xlBook.Close()
    return filename
if __name__ == '__main__':
    unmerge_cell("test.xlsx")

拆分后的sheet頁如圖:

然后再使用pandas讀取中間文件即可:

import pandas as pd
df = pd.read_excel("test_temp.xlsx")

結(jié)果為:

總結(jié)

到此這篇關(guān)于Pandas讀取excel合并單元格的正確方式的文章就介紹到這了,更多相關(guān)Pandas讀取excel合并單元格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python遍歷文件夾找出文件夾后綴為py的文件方法

    python遍歷文件夾找出文件夾后綴為py的文件方法

    今天小編就為大家分享一篇python遍歷文件夾找出文件夾后綴為py的文件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python實現(xiàn)計算最小編輯距離

    Python實現(xiàn)計算最小編輯距離

    這篇文章主要介紹了Python實現(xiàn)計算最小編輯距離的相關(guān)代碼,有需要的小伙伴可以參考下
    2016-03-03
  • python 進(jìn)程的幾種創(chuàng)建方式詳解

    python 進(jìn)程的幾種創(chuàng)建方式詳解

    這篇文章主要介紹了python 進(jìn)程的幾種創(chuàng)建方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 一文詳解如何在Python中進(jìn)行數(shù)學(xué)建模

    一文詳解如何在Python中進(jìn)行數(shù)學(xué)建模

    數(shù)學(xué)建模是數(shù)據(jù)科學(xué)中使用的強(qiáng)大工具,通過數(shù)學(xué)方程和算法來表示真實世界的系統(tǒng)和現(xiàn)象,本文將指導(dǎo)大家完成Python中的數(shù)學(xué)建模過程,感興趣的可以了解下
    2024-11-11
  • Python文件的操作處理詳解

    Python文件的操作處理詳解

    今天這篇文章給大家介紹Python文件的操作處理,文章內(nèi)容介紹的很詳細(xì),有需要的可以參考借鑒,希望能夠給你帶來幫助
    2021-10-10
  • 兩種方法檢查Python中的變量是否為字符串

    兩種方法檢查Python中的變量是否為字符串

    在 Python 中,每個變量都有一個數(shù)據(jù)類型, 數(shù)據(jù)類型表示變量內(nèi)部存儲的數(shù)據(jù)類型,本文通過示例介紹兩種不同的方法來檢查 Python 中的變量是否為字符串,感興趣的朋友一起看看吧
    2023-11-11
  • Python中文件路徑的拼接的幾種方法實例

    Python中文件路徑的拼接的幾種方法實例

    在Python開發(fā)中,文件路徑的拼接是一個常見而且重要的任務(wù),正確的路徑拼接可以確保程序在不同平臺上都能正常運(yùn)行,本文將介紹Python中文件路徑拼接的幾種方式,包括使用os.path.join、os.path.join、pathlib庫以及os.path.join
    2023-12-12
  • Python datetime模塊的使用示例

    Python datetime模塊的使用示例

    這篇文章主要介紹了Python datetime模塊的使用示例,幫助大家更好的理解和使用python處理時間,感興趣的朋友可以了解下
    2021-02-02
  • Anaconda 查看、創(chuàng)建、管理和使用python環(huán)境的方法

    Anaconda 查看、創(chuàng)建、管理和使用python環(huán)境的方法

    這篇文章主要介紹了Anaconda 查看、創(chuàng)建、管理和使用python環(huán)境的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • python3.8動態(tài)人臉識別的實現(xiàn)示例

    python3.8動態(tài)人臉識別的實現(xiàn)示例

    這篇文章主要介紹了python3.8動態(tài)人臉識別的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論