清理Excel文档-根据其内容格式化单元格

罗马波利亚斯基

Python相当新,并完成了我的第一个项目-excel数据清理。这个想法是在将数据上传到系统之前检查数据。不符合要求的单元格必须突出显示,并在该comment列中添加注释

检查要求:

  1. 标记包含数字/符号的名字或姓氏-操作:突出显示单元格并在注释列中添加注释

  2. 检查空白单元格-操作:突出显示该单元格并添加评论

我尝试了不同的方式(尤其是使用IF语句)来突出显示不符合要求的单元格并同时进行注释,但没有任何效果

import pandas as pd
import numpy as np

df_i = pd.DataFrame({'Email' : ['[email protected]','[email protected]','[email protected]'], 'First Name': ['JOHN','   roman2   ',''], 'Last Name': ['Smith','','132'], 'Comments':['','','']})
emails_to_exclude = ('@gmail', '@yahoo')

print(df_i)

#Proper names
def proper_name(name):
    return name.str.title()

df_i['First Name'] = proper_name(df_i['First Name'] )
df_i['Last Name'] = proper_name(df_i['Last Name'] )

#Trim spaces
def trim(cell):
        return cell.apply(lambda x: x.str.strip())

df_i = trim(df_i)

#Check public email domains
df_i.loc[df_i['Email'].str.contains('|'.join(emails_to_exclude), case=False),'Comments'] = df_i['Comments'].astype(str) + 'public email domain'

#Check first and last name

list_excl = ["1","2","3","4","5","6","7","8","9","0"]
df_i.loc[df_i['First Name'].str.contains('|'.join(list_excl), case=False), 'Comments']  = df_i['Comments'].astype(str) + " Check 'First Name'"
df_i.loc[df_i['Last Name'].str.contains('|'.join(list_excl), case=False), 'Comments']  = df_i['Comments'].astype(str) + " Check 'Last Name'"

print(df_i)
pnovotnyq

我将编写一个函数re来查看字符串是否与定义的模式匹配。我知道所需的模式是大写或小写字母的序列(不确定名称是否可以包含空格字符)。

对于格式部分,请使用df.style基本上,您编写了一个函数,该函数定义了如何使用CSS格式化每个单元格。您将需要导出到excel(csv不包含有关格式的任何信息)。您也可以将其呈现为html表。阅读更多请注意,使用后df.style,您正在使用的对象将不再存在pd.DataFrame而是pandas.io.formats.style.Styler在对DataFrame进行样式设置之前,您应该执行任何您想做的事情

import pandas as pd
import numpy as np
import re

def highlight_invalid(string, invalid_colour='yellow', empty_colour='red'):
    if string:
        # The string contains only one or more letters
        pattern = re.compile(r'^([A-z])+$')
        if pattern.match(string):
            # do not highlight valid strings
            return ''
        else:
            # highlight non-matching strings in invalid_colour
            return f'background-color: {invalid_colour}'
    else:
        # highlight empty strings in empty_colour
         return f'background-color: {empty_colour}'

cols = ['First Name', 'Last Name']
for col in cols:
    # It didn't work when I tried it with missing values, so make sure to replace
    df_i[col] = df_i[col].replace(np.nan, '')

# Apply the highlighting function to every cell of 'First Name' and 'Last Name'
df_i = df_i.style.applymap(highlight_invalid, subset=cols)

df_i.to_excel(fname)

也许您想编写一个单独的函数来进行数据验证,并将其用于突出显示和添加注释。我将把它留给您,因为这与格式化本身无关,应该作为一个单独的问题提出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据单元格文本内容格式化单元格颜色

来自分类Dev

Excel条件格式-根据行号和公式格式化单元格

来自分类Dev

如何根据Excel中的另一个单元格值格式化单元格?

来自分类Dev

如何根据单元格值交替格式化excel

来自分类Dev

获取Excel单元格内容并将其放入格式化的.txt文件中

来自分类Dev

打开HTML内容时如何格式化Excel单元格“文本”

来自分类Dev

从Excel内容格式化电子邮件正文

来自分类Dev

使用python在excel中格式化单元格

来自分类Dev

从Excel读取列,重新格式化单元格

来自分类Dev

在Excel中获取单元格的格式化值

来自分类Dev

如何使Excel 2007停止格式化单元格?

来自分类Dev

在php中格式化csv(excel)单元格

来自分类Dev

在Excel中格式化单元格

来自分类Dev

Excel 格式化单元格中的数字

来自分类Dev

根据行的第一个单元格的值对excel行进行条件格式化

来自分类Dev

如何在Excel 2007中使用条件格式来格式化单元格

来自分类Dev

VBA Excel - 找到一个单元格并格式化下面的单元格

来自分类Dev

使用NPOI,如何返回已由Excel格式化的单元格值?

来自分类Dev

复制格式化的文本并存储为Excel 2007中的单元格值

来自分类Dev

使用EPPlus,如何返回已由Excel格式化的单元格值?

来自分类Dev

使用熊猫在excel中格式化单元格和行的颜色

来自分类Dev

如何使用Excel数据栏格式化带有文本值的单元格?

来自分类Dev

复制格式化的文本并将其存储为Excel 2007中的单元格值

来自分类Dev

格式化Excel单元格的值和数据类型

来自分类Dev

如何格式化十六进制的Microsoft Excel 2007单元格?

来自分类Dev

如何为工程表示法格式化Excel单元格?

来自分类Dev

如何在Excel中格式化单元格以显示活动列中的值?

来自分类Dev

Excel宏可根据值和下面带有空白行的组来格式化单元格

来自分类Dev

如何使用Excel公式从格式化文本中的Excel单元格中提取大文本?

Related 相关文章

  1. 1

    根据单元格文本内容格式化单元格颜色

  2. 2

    Excel条件格式-根据行号和公式格式化单元格

  3. 3

    如何根据Excel中的另一个单元格值格式化单元格?

  4. 4

    如何根据单元格值交替格式化excel

  5. 5

    获取Excel单元格内容并将其放入格式化的.txt文件中

  6. 6

    打开HTML内容时如何格式化Excel单元格“文本”

  7. 7

    从Excel内容格式化电子邮件正文

  8. 8

    使用python在excel中格式化单元格

  9. 9

    从Excel读取列,重新格式化单元格

  10. 10

    在Excel中获取单元格的格式化值

  11. 11

    如何使Excel 2007停止格式化单元格?

  12. 12

    在php中格式化csv(excel)单元格

  13. 13

    在Excel中格式化单元格

  14. 14

    Excel 格式化单元格中的数字

  15. 15

    根据行的第一个单元格的值对excel行进行条件格式化

  16. 16

    如何在Excel 2007中使用条件格式来格式化单元格

  17. 17

    VBA Excel - 找到一个单元格并格式化下面的单元格

  18. 18

    使用NPOI,如何返回已由Excel格式化的单元格值?

  19. 19

    复制格式化的文本并存储为Excel 2007中的单元格值

  20. 20

    使用EPPlus,如何返回已由Excel格式化的单元格值?

  21. 21

    使用熊猫在excel中格式化单元格和行的颜色

  22. 22

    如何使用Excel数据栏格式化带有文本值的单元格?

  23. 23

    复制格式化的文本并将其存储为Excel 2007中的单元格值

  24. 24

    格式化Excel单元格的值和数据类型

  25. 25

    如何格式化十六进制的Microsoft Excel 2007单元格?

  26. 26

    如何为工程表示法格式化Excel单元格?

  27. 27

    如何在Excel中格式化单元格以显示活动列中的值?

  28. 28

    Excel宏可根据值和下面带有空白行的组来格式化单元格

  29. 29

    如何使用Excel公式从格式化文本中的Excel单元格中提取大文本?

热门标签

归档