最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)在被錯誤的標記成了掛科數(shù)據(jù)。

再例如:

對所有列填充后:

同樣存在大量數(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讀取中間文件即可:

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)文章

  • Django中多用戶角色和權(quán)限管理的實現(xiàn)步驟

    Django中多用戶角色和權(quán)限管理的實現(xiàn)步驟

    定義用戶角色模型:首先,定義一個用戶角色模型,該模型表示不同的用戶角色,例如管理員、普通用戶、編輯等,這篇文章主要介紹了Django中多用戶角色和權(quán)限管理的實現(xiàn)步驟,需要的朋友可以參考下
    2024-05-05
  • python辦公之python編輯word

    python辦公之python編輯word

    這篇文章主要介紹了python辦公之python編輯word,文章我們以python操作word為例來介紹一些簡單的操作,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • python畫雙y軸圖像的示例代碼

    python畫雙y軸圖像的示例代碼

    今天小編就為大家分享一篇python畫雙y軸圖像的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • mac在matplotlib中顯示中文的操作方法

    mac在matplotlib中顯示中文的操作方法

    這篇文章主要介紹了mac如何在matplotlib中顯示中文,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python網(wǎng)絡(luò)編程 Python套接字編程

    Python網(wǎng)絡(luò)編程 Python套接字編程

    這篇文章主要為大家詳細介紹了Python網(wǎng)絡(luò)編程的相關(guān)資料,Python套接字編程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Python使用matplotlib.pyplot畫熱圖和損失圖的代碼詳解

    Python使用matplotlib.pyplot畫熱圖和損失圖的代碼詳解

    眾所周知,在完成論文相關(guān)工作時畫圖必不可少,如損失函數(shù)圖、熱力圖等是非常常見的圖,在本文中,總結(jié)了這兩個圖的畫法,下面給出了完整的代碼,開箱即用,感興趣的同學(xué)可以自己動手嘗試一下
    2023-09-09
  • pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法

    pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法

    下面小編就為大家分享一篇pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python 如何用terminal輸入?yún)?shù)

    python 如何用terminal輸入?yún)?shù)

    這篇文章主要介紹了python 如何用terminal輸入?yún)?shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python繪制橫向水平柱狀條形圖

    python繪制橫向水平柱狀條形圖

    這篇文章主要為大家詳細介紹了python繪制橫向水平柱狀條形圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • tensorflow保持每次訓(xùn)練結(jié)果一致的簡單實現(xiàn)

    tensorflow保持每次訓(xùn)練結(jié)果一致的簡單實現(xiàn)

    今天小編就為大家分享一篇tensorflow保持每次訓(xùn)練結(jié)果一致的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論

泸溪县| 错那县| 武宣县| 浮梁县| 麻城市| 恩施市| 凤庆县| 同江市| 铜川市| 邵东县| 巴林右旗| 饶阳县| 玉门市| 黔江区| 永福县| 涞水县| 随州市| 舞阳县| 美姑县| 化州市| 白银市| 将乐县| 正安县| 怀宁县| 阜平县| 建水县| 罗源县| 东源县| 神农架林区| 旌德县| 樟树市| 永靖县| 汉源县| 福鼎市| 虎林市| 封丘县| 子洲县| 河间市| 米林县| 苍南县| 聂拉木县|