【问题标题】:conditional formatting in dataframe using python使用python在数据框中进行条件格式化
【发布时间】:2019-04-03 05:57:29
【问题描述】:

我有一个 pandas 数据框,我需要根据指定的条件对其进行分类。阈值是固定的,必须根据阈值的 8 种不同组合进行分类。

Threshold (A => 7, B = 3 or 4, C = between 22 - 27) 

我尝试使用带有条件操作的 pandas 对数据进行分类,但它会产生误导性的结果。

条件是:

1. class1=f[(f['A']>7.0)&((f['B']==3.0)|(f['B']==4.0))& ((f['C']>=22.0)&(f['C']<=27.0))]
2. class2=f[(f['A']>7.0)&((f['B']==3.0)|(f['B']==4.0))& ((f['C']<=22.0)&(f['C']>=27.0))]
3. class3=f[(f['A']<7.0)&((f['B']==3.0)|(f['B']==4.0))& ((f['C']>=22.0)&(f['C']<=27.0))]
4. class4=f[(f['A']>7.0)&((f['B']!=3.0)&(f['B']!=4.0))& ((f['C']>=22.0)&(f['C']<=27.0))]
5. class5=f[(f['A']>7.0)&((f['B']!=3.0)&(f['B']!=4.0))& ((f['C']<=22.0)&(f['C']>=27.0))]
6. class6=f[(f['A']<7.0)&((f['B']==3.0)|(f['B']==4.0))& ((f['C']<=22.0)&(f['C']>=27.0))]
7. class7=f[(f['A']<7.0)&((f['B']!=3.0)&(f['B']!=4.0))& ((f['C']>=22.0)&(f['C']<=27.0))]
8. class8=f[(f['A']<7.0)|((f['B']!=3.0)&(f['B']!=4.0))| ((f['C']<=22.0)&(f['C']>=27.0))]

我需要根据条件对数据框中的所有行进行分类。

【问题讨论】:

    标签: python pandas conditional-formatting


    【解决方案1】:

    您的情况:您的数据框名为 f,包含 3 列数值。这些列称为'A''B''C'

    我建议通过创建布尔列并将它们组合以匹配您的类来做到这一点。可能有更多方法可以做到这一点,也有更优雅的方法。我认为这个解决方案很简单。本质上,您可以满足三个条件:

    check_a = f['A'] >= 7
    check_b = (f['B'] == 3) | (f['B'] == 4)
    check_c = (22 <= f['C'] <= 27)
    

    结合这 3 个检查将构建您的 8 个案例(~ 否定布尔值,因此基本上翻转它们的值):

    f['class_1'] =  check_a &  check_b &  check_c
    f['class_2'] =  check_a &  check_b & ~check_c
    f['class_3'] = ~check_a &  check_b &  check_c
    f['class_4'] =  check_a & ~check_b &  check_c
    f['class_5'] =  check_a & ~check_b & ~check_c
    f['class_6'] = ~check_a &  check_b & ~check_c
    f['class_7'] = ~check_a & ~check_b &  check_c
    f['class_8'] = ~check_a & ~check_b & ~check_c
    

    您的代码不起作用的一个原因是,您正在检查 'C' 列中的值是否都小于 22 并且大于 27。这永远不会是真的。

    【讨论】:

    • 谢谢。我用“或”尝试了相同的布尔值,它成功执行了。
    猜你喜欢
    • 2013-05-19
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多