如何在python中标记选定列中的异常值/异常?

如何在python中标记选定列中的异常值/异常?,python,pandas,Python,Pandas,在下面的数据集中df。我想在所有列中标记异常,除了A、B、C和L 任何小于1500或大于400000的值均视为异常 import pandas as pd # intialise data of lists data = { 'A':['T1', 'T2', 'T3', 'T4', 'T5'], 'B':[1,1,1,1,1], 'C':[1,2,3,5,9], 'D':[12005, 18190, 1034, 15

在下面的数据集中
df
。我想在所有列中标记异常,除了
A
B
C
L

任何小于1500或大于400000的值均视为异常

import pandas as pd
  
# intialise data of lists
data = { 
         'A':['T1', 'T2', 'T3', 'T4', 'T5'],
         'B':[1,1,1,1,1],
         'C':[1,2,3,5,9],
         'D':[12005, 18190, 1034, 15310, 31117],
        'E':[11021, 19112, 19021, 12, 24509 ],
        'F':[10022,19910, 19113,19999, 25519],
        'G':[14029, 29100, 39022, 24509, 412262],
        'H':[52119,32991,52883,69359,57835],
         'J':[41218, 52991,55121,69152,79355],
         'K': [43211,8199991,56881,212,77342],
          'L': [1,0,1,0,0],
          'M': [31211,42901,53818,62158,69325],
        
        }
  
# Create DataFrame
df = pd.DataFrame(data)
  
# Print the output.
df
尝试:

exclude_cols = ['A','B','C','L']

def flag_outliers(s, exclude_cols):
    if s.name in exclude_cols:
        return '' # or None, or whatever df.style() needs
    else:
        s = pd.to_numeric(s, errors='coerce')
        indexes = (s<1500)|(s>400000)
        return ['background-color: red' if v else '' for v in indexes]

df.style.apply(lambda s: flag_outliers(s, exclude_cols), axis=1)

exclude_cols=['A','B','C','L']
def flag_异常值(s、exclude_COL):
如果s.name在exclude_cols中:
返回“”#或None,或df.style()需要的任何内容
其他:
s=pd.to_numeric(s,errors='concurve')
索引=(s400000)
返回['background-color:red'if v else''表示索引中的v]
df.style.apply(lambda s:flag_异常值(s,exclude_cols),axis=1)
守则的结果:

所需的输出应如下所示:


谢谢你的努力

如果您将子集设置为apply函数的参数,您将得到您想要的

exclude_cols = ['A','B','C','L']

def flag_outliers(s, exclude_cols):
    if s.name in exclude_cols:
        print(s.name)
        return '' # or None, or whatever df.style() needs
    else:
        s = pd.to_numeric(s, errors='coerce')
        indexes = (s<1500)|(s>400000)
        return ['background-color: yellow' if v else '' for v in indexes]

df.style.apply(lambda s: flag_outliers(s, exclude_cols), axis=1, subset=['D','E','F','G','H','J','K'])
exclude_cols=['A','B','C','L']
def flag_异常值(s、exclude_COL):
如果s.name在exclude_cols中:
印刷品(s.name)
返回“”#或None,或df.style()需要的任何内容
其他:
s=pd.to_numeric(s,errors='concurve')
索引=(s400000)
返回['background-color:yellow'if v else''表示索引中的v]
apply(lambda s:标记异常值(s,排除异常值),轴=1,子集=['D','E','F','G','H','J','K'])

您正在寻找如何将颜色从
红色更改为
黄色
?@MayankPorwal我正在寻找如何在标记其余列时跳过“B”、“C”和“L”列。颜色不重要