当前位置:   article > 正文

pandas处理excel表格_pandas合并单元格

pandas合并单元格

需求:
1.对特定的合并单元格,进行填充
2.将某一列为空的一行删除
3.将某一列出现“同4”的那一行删去,保留类似“xml相同”,“json相同”的行
4.将某一列为“ntn”的那一行删除
5.将出现的“正常”的字符串改为“正常输出结果”
6.将“引擎异常”改为“引擎报错”
7.抽取其中的序号列,以及Unnamed:4,Unnamed:5这一列
8.将文件名的后缀由.xlsx改为.txt
| 在这里插入图片描述
| |

import pandas as pd
import re
import os
import path

if __name__=='__main__':
    xlsx_dir="C:\\Users\\wwj\\Desktop\\新建文件夹"
    file_path=" "
    names=os.listdir(xlsx_dir)  #列出文件夹下的文件名
    for name in names:
        if name=='11.29.xlsx':
            file_path=os.path.join(xlsx_dir,name)
            df=pd.read_excel(file_path)
            #df.loc[10:14,["Unnamed: 4"]]=df.loc[8,["Unnamed: 4"]]
            df.loc[10:14,["Unnamed: 4"]]=df.fillna(method='ffill').loc[10:14, ["Unnamed: 4"]]
            for i, row in df.iterrows():
                #print(i,row["Unnamed: 4"],row["Unnamed: 5"])
                if re.search(".*ntn.*",row["Unnamed: 5"]):
                    df=df.drop(axis=0,index=i)
                    continue
                if type(row["Unnamed: 4"]) is float:
                    df=df.drop(axis=0,index=i)
                    continue
                if type(row["Unnamed: 2"]) is not float and re.search("^同.*",row["Unnamed: 2"]):
                    df=df.drop(axis=0,index=i) #axis=0为行  index代表第i行
                    continue
                if re.search(".*正常.*",row["Unnamed: 4"]):
                    df.loc[i,"Unnamed: 4"]='正常输出结果'
                if re.search(".*异常.*",row["Unnamed: 4"]):
                    df.loc[i,"Unnamed: 4"]='引擎报错'
            df=df.loc[0:,["序号","Unnamed: 4","Unnamed: 5"]]
            print(df)
            split_file=os.path.splitext(name) #split_file=["11.29","xlsx"]
            old_ext=split_file[-1]
            print(old_ext)
            new_ext='.txt'
            newfile=split_file[0]+new_ext
            newfile_path=os.path.join(xlsx_dir, newfile)
            print(newfile_path)#C:\\Users\\wwj\\Desktop\\11.2901.txt
            #df.to_excel("C:\\Users\\wwj\\Desktop\\11.2901.xlsx")
            df.to_csv(newfile_path, sep='\t', index=False,header=False)  #写成txt文本  双斜杆的问题 通过在路径前加r来解决
            #index代表序号,header代表每一列的表头
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

需要注意的是:
1.excel中某一个地方空的话,NAN为float类型
2.合并单元格 的第一个地方是具体的数值,剩余的地方为NAN,float类型
3.每一列的列头为空的话,pandas读取的时候,会认为是Unnamed:0,1,2,3…
4.运用正则re 包, re.search(“^同.*”,row[“Unnamed: 2”])
"^"代表匹配字符串开头,“$"代表匹配字符串末尾
5.把name的具体值和后缀拆开成为列表

os.path.splitext(name)
  • 1

6.将dataframe保存为txt格式

df.to_csv("C:\\Users\\wwj\\Desktop\\11.2901.txt", sep='\t', index=False,header=False)  
  • 1

7.处理特定位置的合并单元格(ffiill代表向后填充)

 df.loc[10:14,["Unnamed: 4"]]=df.fillna(method='ffill').loc[10:14, ["Unnamed: 4"]]
  • 1

8.以行来进行遍历:

for i, row in df.iterrows():
  • 1

9.删除某一行:

 df=df.drop(axis=0,index=i)#axis=0为行  index代表第i行
  • 1

10.对特定位置赋值:

  df.loc[i,"Unnamed: 4"]='正常输出结果'
  • 1

11.只保留特定的列:

df=df.loc[0:,["序号","Unnamed: 4","Unnamed: 5"]]
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/209989
推荐阅读
相关标签
  

闽ICP备14008679号