国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了Pandas讀取excel合并單元格的正確姿勢(openpyxl合并單元格拆分并填充內(nèi)容)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

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

pandas讀取excel合并單元格,Python,pandas,excel,python

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

pandas讀取excel合并單元格,Python,pandas,excel,python

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

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

pandas讀取excel合并單元格,Python,pandas,excel,python

這樣看起來沒問題,但是,該解決方案并不能適用于所有場景,甚至會造成數(shù)據(jù)錯誤。


例如:

pandas讀取excel合并單元格,Python,pandas,excel,python 對班級和備注填充后: pandas讀取excel合并單元格,Python,pandas,excel,python

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


再例如:

pandas讀取excel合并單元格,Python,pandas,excel,python 對所有列填充后:pandas讀取excel合并單元格,Python,pandas,excel,python

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

正確填充方式

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

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

import openpyxl

# 拆分所有的合并單元格,并賦予合并之前的值。
# 由于openpyxl并沒有提供拆分并填充的方法,所以使用該方法進行完成
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讀取excel合并單元格,Python,pandas,excel,python

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

import pandas as pd

df = pd.read_excel("test_temp.xlsx")

結果為:

pandas讀取excel合并單元格,Python,pandas,excel,python文章來源地址http://www.zghlxwxcb.cn/news/detail-779308.html

到了這里,關于Pandas讀取excel合并單元格的正確姿勢(openpyxl合并單元格拆分并填充內(nèi)容)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 解決pandas讀取excel單元格出錯_x0000_

    如果已經(jīng)讀出來了這個問題,那么就只能使用 replace 替換了: 這是因為pandas解析excel的 .xlsx 文件時,使用的引擎是openpyxl,而有些情況下因為excel文件修修改改,導致有些編碼格式被遺留在了excel單元格中,會在使用openpyxl時出現(xiàn)意外

    2024年02月11日
    瀏覽(22)
  • elementUI中table單元格的合并,通用版

    elementUI中table單元格的合并,通用版

    之前曾發(fā)布過一篇文章關于單元格合并問題,但是通用性很差,切代碼較長不美觀,改進之后分享給大家,我這里使用的是vue3,vue2的小伙伴稍微改動一下即可 如圖:合并前 ?想要效果: ?話不多說直接上代碼教大家?。。?1.定義兩個變量 2.定義編寫合并邏輯的方法 3.調(diào)用 4

    2024年02月15日
    瀏覽(24)
  • vue前端docx庫生成word表格 并合并單元格的例子

    ????????Vue.js 是一個流行的前端JavaScript框架,用于構建用戶界面和單頁應用程序。在Vue中生成Word表格并合并單元格,通常需要使用額外的庫,如`docx`,它是一個用于創(chuàng)建和修改Word文檔(`.docx`)的JavaScript庫。 ????????以下是一個使用Vue.js和`docx`庫來生成Word文檔并合并

    2024年02月22日
    瀏覽(48)
  • 利用Python中的openpyxl/Pandas庫操作excel

    本文主要講述 openpyxl庫對excel文件的讀取寫入操作以及Pandas庫對excel文件的寫入操作。 一、openpyxl介紹安裝 1.安裝openpyxl 2.Excel中的三大對象 二、openpyxl對Excel的操作 ?使用openpyxl讀取excel 使用openpyxl寫入excel ? ? ? ??三、使用pandas寫入excel python中與excel操作相關的模塊: xlrd庫

    2024年02月08日
    瀏覽(30)
  • Java用正確的姿勢寫單元測試以及mock

    對于一些簡單的功能或業(yè)務,我們也許可以通過前端調(diào)試、postman等接口工具、main函數(shù)調(diào)用進行測試。但這每次改動代碼都要人力測試,耗費大量的人力資源且不高效,真正的項目中單元測試是必不可少的。 單元測試的三步走: 1、組裝方法入?yún)?2、執(zhí)行方法 3、對方法的執(zhí)行

    2024年02月13日
    瀏覽(28)
  • Python-使用openpyxl讀取excel內(nèi)容

    Python-使用openpyxl讀取excel內(nèi)容

    將下面的excel中的寄存器表單讀入并構建一個字典 wb.sheetnames 會返回一個列表,列表中是每個工作表的名稱,數(shù)據(jù)類型為str。執(zhí)行上述代碼后ws就是獲取的工作表。 使用sheet.cell會返回cell對象,再使用cell.value才能返回單元格的值,執(zhí)行上述代碼的結果如下: 按行讀取可以用

    2024年03月12日
    瀏覽(24)
  • python之使用openpyxl讀取excel

    獲取最大行和最大列 獲取某個單元格的值 獲取行和列 通過worksheet.cell獲取所有數(shù)據(jù)方法

    2024年02月15日
    瀏覽(22)
  • Python用openpyxl讀取單元格中的公式或讀取公式計算值

    本文參考了CSDN博主「claria029」的文章,原文鏈接:https://blog.csdn.net/claria029/article/details/116486904 Python使用openpyxl讀取帶公式的單元格時,可以選擇讀取公式還是讀取公式計算值。其關鍵在于打開文件時給出data_only參數(shù),當該參數(shù)的值設為False時,讀取的是單元格中的公式;當該

    2024年02月05日
    瀏覽(13)
  • Python用openpyxl操作Excel:讀寫、遍歷、單元格讀寫

    openpyxl支持讀寫Excel,自帶整合Pandas和NumPy功能。 worksheet cell

    2024年02月16日
    瀏覽(31)
  • 利用Python的csv(CSV)庫讀取csv文件并取出某個單元格的內(nèi)容的學習過程

    利用Python的csv(CSV)庫讀取csv文件并取出某個單元格的內(nèi)容的學習過程

    csv庫在python3中是自帶的。 利用它可以方便的進行csv文件內(nèi)容的讀取。 注意:要以 gbk 的編碼形式打開,因為WPS的csv文件默認是 gbk 編碼,而不是 utf-8 。 表頭為第1行,現(xiàn)在要讀取并打印出第2行的內(nèi)容,并附加上表頭信息的代碼如下: 運行效果如下: 如果要讀取第3行的內(nèi)容

    2024年01月16日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包