日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 1 2 3怎么拼接所有可能的数_6000字长文,带你用Python完成 “Excel合并(拆分)” 的各种操作!...

發(fā)布時(shí)間:2025/4/5 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 1 2 3怎么拼接所有可能的数_6000字长文,带你用Python完成 “Excel合并(拆分)” 的各种操作!... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原標(biāo)題:6000字長文,帶你用Python完成 “Excel合并(拆分)” 的各種操作!

一、概述

其實(shí)Excel合并這個(gè)需求,應(yīng)該是一個(gè)極為普遍的需求了。今天我們就利用Python完成“Excel合并(拆分)” 操作,具體如下:

① 將多個(gè)Excel表,合并到一個(gè)Excel中(每個(gè)Excel中只有一個(gè)sheet表);

② 將多個(gè)Excel表,合并到一個(gè)Excel中(每個(gè)Excel中不只一個(gè)sheet表);

③ 將一個(gè)Excel表中的多個(gè)sheet表合并,并保存到同一個(gè)excel;

④ 將一個(gè)Excel表,按某一列拆分成多張表;

二、知識(shí)點(diǎn)講解

其實(shí)完成這些操作,涉及到了太多的知識(shí)點(diǎn),因此在講述上述這個(gè)知識(shí)點(diǎn)以前,我們要帶大家復(fù)習(xí)一些常用的知識(shí)點(diǎn)。

① os模塊常用知識(shí)點(diǎn)講解;

② pandas模塊常用知識(shí)點(diǎn)講解;

③ xlsxwriter模塊常用知識(shí)點(diǎn)講解;

④ xlrd常用知識(shí)點(diǎn)講解;

1. os模塊知識(shí)點(diǎn)講解

對(duì)于os模塊,我們主要講述os.walk()、os.path.join()等知識(shí)點(diǎn)。

1.1 os.walk()

對(duì)于這個(gè)知識(shí)點(diǎn),我們需要說明以下幾點(diǎn):

os.walk()的返回值是一個(gè)生成器(generator),我們需要循環(huán)遍歷它,來獲取其中的內(nèi)容;

每次遍歷,返回的都是一個(gè)三元組(path, dirs, files);

path:返回的是當(dāng)前正在遍歷的這個(gè)文件夾的,本身路徑地址;

dirs:返回的是該文件夾中所有目錄的名字(不包含子目錄),有多少個(gè)都以“列表”返回;

files:返回的是該文件夾中所有的文件(不包含子目錄下的文件),有多少個(gè)都以“列表”返回;

如果說,有一個(gè)如圖所示的文件夾。

利用下方的代碼,我們可以得到什么結(jié)果呢?

pwd = "G:\\a"

print(os.walk(pwd))

for i in os.walk(pwd):

print(i)

for path,dirs,files in os.walk(pwd):

print(files)```

結(jié)果如下:

('G:\\a', [], ['aa.txt', 'bb.xlsx', 'cc.txt', 'dd.docx'])

['aa.txt', 'bb.xlsx', 'cc.txt', 'dd.docx']

1.2 os.path.join()

這個(gè)函數(shù),主要用于將多個(gè)路徑組合后返回,超級(jí)簡單,就不做過多闡述。

path1 = 'G:\\a'

path2 = 'aa.txt'

print(os.path.join(path1,path2))

結(jié)果如下:

G:\a\aa.txt

2. pandas模塊知識(shí)點(diǎn)講解

由于是需要利用Pandas進(jìn)行Excel的合并,因此我們要學(xué)會(huì),如何利用Pandas進(jìn)行數(shù)據(jù)的縱向合并。

我們先創(chuàng)建2個(gè)數(shù)據(jù)框(DataFrame):

import numpy as np

xx = np.arange(15).reshape(5,3)

yy = np.arange(1,16).reshape(5,3)

xx = pd.DataFrame(xx,columns=["語文","數(shù)學(xué)","外語"])

yy = pd.DataFrame(yy,columns=["語文","數(shù)學(xué)","外語"])

print(xx)

print(yy)

效果如下:

接著,可以利用Pandas中的concat()函數(shù),完成縱向拼接的操作。

pd.concat(list)中【默認(rèn)axis=0】默認(rèn)的是數(shù)據(jù)的縱向合并;

pd.concat(list)括號(hào)中傳入的是一個(gè)列表;

ignore_list=True表示忽略原有索引,重新生成一組新的索引;

或者直接可以寫成z = pd.concat([xx,yy],ignore_list=True);

concat_list = []

concat_list.append(xx)

concat_list.append(yy)

z = pd.concat(concat_list,ignore_list=True)

print(z)

效果如下:

3. xlsxwriter模塊知識(shí)點(diǎn)講解

xlsxwriter模塊一般是和xlrd模塊搭配使用的, xlsxwriter:負(fù)責(zé)寫入數(shù)據(jù), xlrd:負(fù)責(zé)讀取數(shù)據(jù)。接下來,我們分別對(duì)這兩個(gè)庫的常見用法,進(jìn)行介紹。

1)如何創(chuàng)建一個(gè)“工作簿”?

import xlsxwriter

# 這一步相當(dāng)于創(chuàng)建了一個(gè)新的"工作簿";

# "demo.xlsx"文件不存在,表示新建"工作簿";

# "demo.xlsx"文件存在,表示新建"工作簿"覆蓋原有的"工作簿";

workbook = xlsxwriter.Workbook("demo.xlsx")

# close是將"工作簿"保存關(guān)閉,這一步必須有,否則創(chuàng)建的文件無法顯示出來。

workbook.close()

2)如何添加一個(gè)“Sheet工作表”

我們知道,一個(gè)Excel文件就是一個(gè)Excel工作簿,而每一個(gè)工作簿中,又有很多的“Sheet工作表”。接下來,我們?nèi)绾斡么a實(shí)現(xiàn)這個(gè)操作呢?

import xlsxwriter

workbook = xlsxwriter.Workbook("cc.xlsx")

worksheet = workbook.add_worksheet("2018年銷售量")

workbook.close()

效果如下:

3)如何向表中插入數(shù)據(jù)呢?

import xlsxwriter

# 創(chuàng)建一個(gè)名為【demo.xlsx】工作簿;

workbook = xlsxwriter.Workbook("demo.xlsx")

# 創(chuàng)建一個(gè)名為【2018年銷售量】工作表;

worksheet = workbook.add_worksheet("2018年銷售量")

# 使用write_row方法,為【2018年銷售量】工作表,添加一個(gè)表頭;

headings = ['產(chǎn)品','銷量',"單價(jià)"]

worksheet.write_row('A1',headings)

# 使用write方法,在【2018年銷售量】工作表中插入一條數(shù)據(jù);

# write語法格式:worksheet.write(行,列,數(shù)據(jù))

data = ["蘋果",500,8.9]

for i in range(len(headings)):

worksheet.write(1,i,data[i])

workbook.close()

效果如下:

4. xlrd模塊知識(shí)點(diǎn)講解

這里有一個(gè)工作簿“test.xlsx”,該文件中有兩個(gè)“Sheet工作表”,分別命名為“2018年銷售量”、“2019年銷售量”,如圖所示。

1)如何打開一個(gè)“工作簿”?—>open_workbook()

# 這里所說的"打開"并不是實(shí)際意義上的打開,只是將該表加載到內(nèi)存中打開。

# 我們并看不到"打開的這個(gè)效果"

import xlrd

file = r"G:\Jupyter\test.xlsx"

xlrd.open_workbook(file)

結(jié)果如下:

2)如何獲取一個(gè)工作簿下,所有的“Sheet表”名?—>sheet_names()

import xlrd

file = r"G:\Jupyter\test.xlsx"

fh = xlrd.open_workbook(file)

fh.sheet_names()

結(jié)果如下:

['2018年銷售量', '2019年銷售量']

3)如何獲取所有“Sheet表”的對(duì)象列表?—>sheets()

import xlrd

file = r"G:\Jupyter\test.xlsx"

fh = xlrd.open_workbook(file)

fh.sheets()

結(jié)果如下:

[, ]

我們可以利用索引,獲取每一個(gè)sheet表的對(duì)象,然后可以針對(duì)每一個(gè)對(duì)象,進(jìn)行操作。

fh.sheets()[0]

fh.sheets()[1]

4)如何獲取每個(gè)Sheet表的行列數(shù)?—>nrows和ncols屬性

import xlrd

file = r"G:\Jupyter\test.xlsx"

fh = xlrd.open_workbook(file)

fh.sheets()

fh.sheets()[0].nrows # 結(jié)果是:4

fh.sheets()[0].ncols # 結(jié)果是:3

fh.sheets()[1].nrows # 結(jié)果是:4

fh.sheets()[1].ncols # 結(jié)果是:3

5)按行獲取,每個(gè)Sheet表中的數(shù)據(jù)—>row_values()

import xlrd

file = r"G:\Jupyter\test.xlsx"

fh = xlrd.open_workbook(file)

sheet1 = fh.sheets()[0]

for row in range(fh.sheets()[0].nrows):

value = sheet1.row_values(row)

print(value)

效果如下:

三、案例講述

1. 將多個(gè)Excel表,合并到一個(gè)Excel中(每個(gè)Excel中只有一個(gè)sheet表)

有四張表,圖示中一目了然,就不做過多解釋。

實(shí)現(xiàn)代碼如下:

import pandas as pd

import os

pwd = "G:\\b"

df_list = []

for path,dirs,files in os.walk(pwd):

for file in files:

file_path = os.path.join(path,file)

df = pd.read_excel(file_path)

df_list.append(df)

result = pd.concat(df_list)

print(result)

result.to_excel('G:\\b\\result.xlsx',index=False)

結(jié)果如下:

2. 將多個(gè)Excel表,合并到一個(gè)Excel中(每個(gè)Excel中不只一個(gè)sheet表)

有兩個(gè)工作簿,如圖所示。一個(gè)工作簿是pp.xlsx,一個(gè)工作簿是qq.xlsx。工作簿pp.xlsx下,有sheet1和sheet2兩個(gè)工作表。工作簿qq.xlsx下,也有sheet1和sheet2兩個(gè)工作表。

實(shí)現(xiàn)代碼如下:

import xlrd

import xlsxwriter

import os

# 打開一個(gè)Excel文件,創(chuàng)建一個(gè)工作簿對(duì)象

def open_xlsx(file):

fh=xlrd.open_workbook(file)

return fh

# 獲取sheet表的個(gè)數(shù)

def get_sheet_num(fh):

x = len(fh.sheets())

return x

# 讀取文件內(nèi)容并返回行內(nèi)容

def get_file_content(file,shnum):

fh=open_xlsx(file)

table=fh.sheets()[shnum]

num=table.nrows

for row in range(num):

rdata=table.row_values(row)

datavalue.append(rdata)

return datavalue

def get_allxls(pwd):

allxls = []

for path,dirs,files in os.walk(pwd):

for file in files:

allxls.append(os.path.join(path,file))

return allxls

# 存儲(chǔ)所有讀取的結(jié)果

datavalue = []

pwd = "G:\\d"

for fl in get_allxls(pwd):

fh = open_xlsx(fl)

x = get_sheet_num(fh)

for shnum in range(x):

print("正在讀取文件:"+str(fl)+"的第"+str(shnum)+"個(gè)sheet表的內(nèi)容...")

rvalue = get_file_content(fl,shnum)

# 定義最終合并后生成的新文件

endfile = "G:\\d\\concat.xlsx"

wb1=xlsxwriter.Workbook(endfile)

# 創(chuàng)建一個(gè)sheet工作對(duì)象

ws=wb1.add_worksheet()

for a in range(len(rvalue)):

for b in range(len(rvalue[a])):

c=rvalue[a][b]

ws.write(a,b,c)

wb1.close()

print("文件合并完成")

效果如下:

3. 將一個(gè)Excel表中的多個(gè)sheet表合并,并保存到同一個(gè)excel

實(shí)現(xiàn)代碼如下:

import xlrd

import pandas as pd

from pandas import DataFrame

from openpyxl import load_workbook

excel_name = r"D:\pp.xlsx"

wb = xlrd.open_workbook(excel_name)

sheets = wb.sheet_names()

alldata = DataFrame()

for i in range(len(sheets)):

df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')

alldata = alldata.append(df)

writer = pd.ExcelWriter(r"C:\Users\Administrator\Desktop\score.xlsx",engine='openpyxl')

book = load_workbook(writer.path)

writer.book = book

# 必須要有上面這兩行,假如沒有這兩行,則會(huì)刪去其余的sheet表,只保留最終合并的sheet表

alldata.to_excel(excel_writer=writer,sheet_name="ALLDATA")

writer.save()

writer.close()

效果如下:

4. 將一個(gè)Excel表,按某一列拆分成多張表

實(shí)現(xiàn)代碼如下:

import pandas as pd

import xlsxwriter

data=pd.read_excel(r"C:\Users\Administrator\Desktop\chaifen.xlsx",encoding='gbk')

area_list=list(set(data['店鋪']))

writer=pd.ExcelWriter(r"C:\Users\Administrator\Desktop\拆好的表1.xlsx",engine='xlsxwriter')

data.to_excel(writer,sheet_name="總表",index=False)

for j in area_list:

df=data[data['店鋪']==j]

df.to_excel(writer,sheet_name=j,index=False)

writer.save() #一定要加上這句代碼,“拆好的表”才會(huì)顯示出來

效果如下:

[聲明]本文版權(quán)歸原作者所有,內(nèi)容為作者個(gè)人觀點(diǎn),轉(zhuǎn)載目的在于傳遞更多信息,如涉及作品內(nèi)容、版權(quán)等問題,可聯(lián)系本站刪除,謝謝。

更多內(nèi)容可關(guān)注微信公眾號(hào):成都CDA數(shù)據(jù)分析師。返回搜狐,查看更多

責(zé)任編輯:

總結(jié)

以上是生活随笔為你收集整理的python 1 2 3怎么拼接所有可能的数_6000字长文,带你用Python完成 “Excel合并(拆分)” 的各种操作!...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲成人二区 | 在线视频网 | 好吊视频在线观看 | 欧美日韩国产免费一区二区三区 | 99中文字幕在线观看 | 亚洲情欲网 | 国产精品第 | 合欢视频在线观看 | 免费看国产精品 | 欧美肥老妇视频九色 | 欧美高清 | 东北少妇av | 亚洲清色| 欧美久久视频 | 久久中文字幕人妻熟av女蜜柚m | 国产精品无码999 | 婷婷一区二区三区四区 | 国产福利一区二区三区 | 国产黄视频在线观看 | 在线天堂在线 | 五月天男人天堂 | 黄网站在线播放 | 五月天av网| 国产吞精囗交免费视频网站 | 好色视频tv | 91丨porny丨对白 | 午夜精品久久久久久久蜜桃 | av电影在线播放 | 五月天中文字幕av | 亚洲欧美日韩一区二区三区四区 | 久久婷婷综合国产 | 日韩精品中文字幕在线观看 | 亚洲精品高清在线观看 | 丝袜+亚洲+另类+欧美+变态 | 亚洲wwwwww | 午夜看片在线观看 | 影音先锋亚洲天堂 | 男人午夜剧场 | 少妇熟女视频一区二区三区 | 国产黄片毛片 | 中文av在线播放 | 欧美一区二区三区不卡视频 | 在线看黄网站 | 影音先锋国产精品 | 免费观看a级片 | 亚洲精品国产精品乱码不99热 | 美女伊人网 | 在线日韩| 少妇一级淫片免费 | 中文字幕精品一区二 | 免费黄在线| 奇米影视第四色7777 | 天天人人| 国产人妖一区二区 | 欧美啪啪网站 | 欧美一区二区黄片 | 亚洲精品免费在线观看视频 | 男人日女人免费视频 | 天天看黄色| 美女扒开内看个够网站 | 青青操视频在线 | 97操 | 国产精品日韩一区二区 | 极品白嫩的小少妇 | 国产精品乱 | 国产熟妇一区二区三区aⅴ网站 | 东北熟女一区二区三区 | www.日韩一区 | 丰满人妻在公车被猛烈进入电影 | 欧美成人免费一级 | 亚洲最大免费视频 | 五十路在线观看 | 丝袜制服中文字幕 | 精品爆乳一区二区三区无码av | 丰满人妻一区二区三区46 | 日本亚洲视频 | 美女被草出白浆 | 国产精品一区二区三区久久 | 四虎黄色影视 | 伊人久久久久噜噜噜亚洲熟女综合 | 成人a在线 | 久久视频在线观看免费 | 中国女人一级一次看片 | 日本熟妇色xxxxx日本免费看 | 国产做爰免费视频观看 | 日本一区二区三区久久 | 精品国产乱码久久久久久88av | 国产精品日韩一区二区三区 | 中文字幕日韩欧美 | 男人添女人下部高潮全视频 | 黄色一级大片在线免费看产 | 好看的黄色录像 | 亚洲一区你懂的 | 九九九视频在线观看 | 国产无遮挡又黄又爽又色 | 久久无毛 | 一级 黄 色 片69 | 狠狠操夜夜操 | 自拍超碰|