其他分享
首页 > 其他分享> > pandas处理excel总结

pandas处理excel总结

作者:互联网

总结要点

读取步骤

name_='增值税系统'
dir_ ="C:/Users/bob11/Desktop/数据项整理/数据项/%s.xlsx"%name_
df1=pd.read_excel(dir_,skiprows=0,sheet_name=None) # sheet_name=None 用于读取所有sheet页

文件地址采用/,可以避免\需要用r来标注字符串,读取excel时添加参数sheet_name=None可以读取所有sheet名,并通过

list1=list(df1)

生成sheet名的列表,结合for循环可以实现sheet的遍历。

for i in list1:
    df_ = df1.get(i)
    df_=df_[['数据项名称','数据项英文名称']]
    x= df0.loc[df0['数据表名称']==i,'经营管理数据平台库表'].values[0] # 匹配目录中对应行的库表名
    print(x)
    df_.insert(0,'库表名',x)
    df_.insert(0,'表描述',i)
    df_.insert(0,'系统名称',name_)
    if dfs is None:
        dfs=df_
    else:
        dfs = pd.concat([dfs, df_], ignore_index=True)

其中df_ = df1.get(i)用于读取具体某页sheet。

df_=df_[['数据项名称','数据项英文名称']]用于获取表内某列数据,注意当获取2列以上时需要使用嵌套列表。

x= df0.loc[df0['数据表名称']==i,'经营管理数据平台库表'].values[0] 的意思时定位到df0表中‘数据表名称列’,找出值为i
的行,并取本行中‘经营管理数据平台库表’列的值,由于loc得出的数据为表,需要搭配values[0]转换为字符串等。
df_.insert(0,'库表名',x)的三个参数分别为插入列的位置, 插入列的名称,插入列的值,其中x可以为列表也可以为字符串, 字符串时为全列填充。
判断语句存在的目的是为了在第一次循环时,给合并表dfs赋值,pd.concat([dfs, df_], ignore_index=True)实现合并

dfs.to_excel('C:/Users/bob11/Desktop/%s.xlsx'%name_,index=False)

最后的导出excel操作时,添加参数index=False用于剔除默认A列的数字序号。

 

附:完整代码

import pandas as pd
import numpy as np

name_='增值税系统'
dir_ ="C:/Users/bob11/Desktop/数据项整理/数据项/%s.xlsx"%name_
df1=pd.read_excel(dir_,skiprows=0,sheet_name=None) # sheet_name=None 用于读取所有sheet页

list1=list(df1) # 所有sheet页列表
df0=df1.get('目录页') # 目录页用0锁定
list1.remove('目录页') # 剔除目录页,剔除循环

dfs = None
for i in list1:
    df_ = df1.get(i)
    df_=df_[['数据项名称','数据项英文名称']]
    x= df0.loc[df0['数据表名称']==i,'经营管理数据平台库表'].values[0] # 匹配目录中对应行的库表名
    print(x)
    df_.insert(0,'库表名',x)
    df_.insert(0,'表描述',i)
    df_.insert(0,'系统名称',name_)
    if dfs is None:
        dfs=df_
    else:
        dfs = pd.concat([dfs, df_], ignore_index=True)
        
dfs.to_excel('C:/Users/bob11/Desktop/%s.xlsx'%name_,index=False)

 表格结构

 

 

 

标签:总结,数据项,None,sheet,name,df,excel,dfs,pandas
来源: https://www.cnblogs.com/feng-hao/p/16150394.html