ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pandas处理excel总结

2022-04-15 18:02:50  阅读:171  来源: 互联网

标签:总结 数据项 None sheet name df excel dfs pandas


总结要点

读取步骤

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有