第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

python將多個(gè)excel中的所有工作表附加到pandas數(shù)據(jù)框中的有效方法

python將多個(gè)excel中的所有工作表附加到pandas數(shù)據(jù)框中的有效方法

拉風(fēng)的咖菲貓 2022-01-11 15:49:08
我有大約 20++ xlsx 文件,每個(gè) xlsx 文件中可能包含不同數(shù)量的工作表。但謝天謝地,所有列都是所有工作表和所有 xlsx 文件中的一部分。通過參考這里“,我有了一些想法。我一直在嘗試幾種方法將所有 excel 文件(所有工作表)導(dǎo)入并附加到單個(gè)數(shù)據(jù)框(大約 400 萬行記錄)中。注意:我也在這里檢查過“,但它只包括文件級(jí)別、我的構(gòu)成文件和工作表級(jí)別。我試過下面的代碼# import all necessary packageimport pandas as pdfrom pathlib import Pathimport globimport sys# set source pathsource_dataset_path = "C:/Users/aaa/Desktop/Sample_dataset/"source_dataset_list = glob.iglob(source_dataset_path + "Sales transaction *")for file in source_dataset_list:#xls = pd.ExcelFile(source_dataset_list[i])    sys.stdout.write(str(file))    sys.stdout.flush()    xls = pd.ExcelFile(file)    out_df = pd.DataFrame() ## create empty output dataframe    for sheet in xls.sheet_names:        sys.stdout.write(str(sheet))        sys.stdout.flush() ## # View the excel files sheet names        #df = pd.read_excel(source_dataset_list[i], sheet_name=sheet)        df = pd.read_excel(file, sheetname=sheet)        out_df = out_df.append(df)  ## This will append rows of one dataframe to another(just like your expected output)問題:我的方法就像首先讀取每個(gè) excel 文件并在其中獲取工作表列表,然后加載工作表并附加所有工作表。循環(huán)似乎不是很有效,特別是當(dāng)每個(gè)追加的數(shù)據(jù)大小都增加時(shí)。有沒有其他有效的方法可以從多個(gè) excel 文件中導(dǎo)入和附加所有工作表?
查看完整描述

3 回答

?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊

使用sheet_name=None在read_excel從所有sheetnames創(chuàng)建DataFrames的回報(bào)orderdict,然后聯(lián)合起來concat,并最后DataFrame.append到最后DataFrame:


out_df = pd.DataFrame()

for f in source_dataset_list:

    df = pd.read_excel(f, sheet_name=None)

    cdf = pd.concat(df.values())

    out_df = out_df.append(cdf,ignore_index=True)

另一種解決方案:


cdf = [pd.read_excel(excel_names, sheet_name=None).values() 

            for excel_names in source_dataset_list]


out_df = pd.concat([pd.concat(x) for x in cdf], ignore_index=True)


查看完整回答
反對 回復(fù) 2022-01-11
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

如果我正確理解了您的問題,那么設(shè)置sheet_name=None就pd.read_excel可以了。


import os

import pandas as pd


path = "C:/Users/aaa/Desktop/Sample_dataset/"


dfs = [

    pd.concat(pd.read_excel(path + x, sheet_name=None))

    for x in os.listdir(path)

    if x.endswith(".xlsx") or x.endswith(".xls")

]


df = pd.concat(dfs)


查看完整回答
反對 回復(fù) 2022-01-11
?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您想閱讀所有表格,我有一個(gè)非常直接的解決方案。


import pandas as pd

df = pd.concat(pd.read_excel(path+file_name, sheet_name=None), 

               ignore_index=True)


查看完整回答
反對 回復(fù) 2022-01-11
  • 3 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)