我有一个熊猫数据框,我需要根据指定的条件对其进行分类。阈值是固定的,必须根据阈值的8种不同组合进行分类。
prbs_match_out <= ch0_prbs_match_int & ch1_prbs_match_int;
我尝试将熊猫与条件操作结合使用来对数据进行分类,但是会产生误导性的结果。
条件是:
Threshold (A => 7, B = 3 or 4, C = between 22 - 27)
我需要根据条件对数据框中的所有行进行分类。
答案 0 :(得分:0)
您的情况:您的数据框称为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。这永远不可能成立。