Excel总表快速分表:
- step1: 读取exel数据到DataFrame
- step2: dataframe中数据进行筛选
- step3:将筛选完的数据存储到excel中
- 工作中应用实例
step1:读取Excel的数据到pandas 的Dataframe
方法1:采用pandas,读取sheet1的内容到
import pandas as pd
excel_file = pd.ExcelFile(data_name)
data = excel_file.parse('Sheet1')
方法2:采用xlwings读取shee1的内容到Dataframe
import xlwings as xw
import pandas as pd
wb=xw.Book("d:/test.xlsx")
sht=wb.sheets['sheet1']
data=sht.range('A1').options(pd.DataFrame,header=1,index=False,expand='table').value
step2:dataframe中数据进行筛选
原始表:
筛选出姓名为刘春雷的:
newdata =data[data['姓名'] == 刘春雷]
step3:将新data存储到新的excel中
方法1:使用pandas将数据写入到excel中
writer = pd.ExcelWriter('d:/test2.xlsx')
newdata.to_excel(writer, "sheet1", index=False)
writer.save()
运行结果
方法2:使用xlwings将数据写入到excel中
app1=xw.App(visible=False,add_book=False)#不打开excel
wb=app1.books.add()
sht=wb.sheets.add('sheet_姓名')
sht.range('A1').value=newdata
wb.save("d:/test3.xlsx")
wb.close()
运行结果
应用场景:
未完待续....
其他:
Pandas 操作excel常用操作
读取excel数据到dataframeimport pandas as pd
#读取excel数据到dataframe
df=pd.read_excel('d:/test.xlsx')
查看所有列名 df.columns
增加列 #删除列
df.drop('新增列',axis=1,inplace=True)
选择1列 #选择一列
df['姓名']
#方法2
df.loc[:,[’姓名‘]]
#方法3
df.iloc[:,0]
选择多列 #选取多列 注意这里两个[[]]
df[['姓名','年龄']]
#方法2
df.loc[:,['姓名','年龄']]
筛选列 取出age>30的列 df[df['age'] > 3]
获得行数列数 #行数、列数
df.shape[0]
df.shape[1]
选择第1行 df.iloc[0,:]:返回第一行
df.iloc[0,0]:返回第一列的第一个元素
排序操作 df.sort_values(col1):按照列col1排序数据,默认升序排列
df.sort_values(col2, ascending=False):按照列col1降序排列数据
df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数
保存到excel writer = pd.ExcelWriter('d:/test2.xlsx')
newdata.to_excel(writer, "sheet1", index=False)
writer.save()
参考:
- 通过xlwings读取数据到pandas的dataframe
A whole sheet into a panda dataframe with xlwingsstackoverflow.com
2. xlwings官网 quick start
Quickstart - xlwings dev documentationdocs.xlwings.org
3. 站在巨人的肩上,思路参考的下面的链接
zzh:python 把excel的总表 拆分成对应的分表zhuanlan.zhihu.com
4.xlwings 常用操作
朱卫军:xlwings,让excel飞起来!zhuanlan.zhihu.com