这是我的样例数据输入和输出:
df=pd.DataFrame({'A_flag': [1, 1,1], 'B_flag': [1, 1,0],'C_flag': [0, 1,0],'A_value': [5, 3,7], 'B_value': [2, 7,4],'C_value': [4, 2,5]})
df1=pd.DataFrame({'A_flag': [1, 1,1], 'B_flag': [1, 1,0],'C_flag': [0, 1,0],'A_value': [5, 3,7], 'B_value': [2, 7,4],'C_value': [4, 2,5], 'Final':[3.5,3,7]})
我想基于A_flag、B_flag和C_flag生成另一列"Final":
(a) 如果这三个列中为1的数量等于3,则 'Final' 等于 (A_value, B_value, C_value) 的中位数
(b) 如果满足条件的数量为2,则 'Final' 等于这两个数的平均值
(c) 如果数量为1,则 'Final' = 这个数
例如,在第1行,A_flag=1且B_flag=1,则 'Final'=A_value+B_value/2=5+2/2=3.5 ;在第2行中,所有三个标志都是1,所以 'Final'= (3,7,2) 的中位数=3 ;在第3行中,只有 A_flag=1,则 'Final'= A_value=7。
我尝试了以下代码:
df.loc[df[['A_flag','B_flag','C_flag']].eq(1).sum(axis=1)==3, "Final"]= df[['A_flag','B_flag','C_flag']].median(axis=1)
df.loc[df[['A_flag','B_flag','C_flag']].eq(1).sum(axis=1)==2, "Final"]=
df.loc[df[['A_flag','B_flag','C_flag']].eq(1).sum(axis=1)==1, "Final"]=
我不知道如何对第二个和第三个场景进行列子集。