如何根据不同列中的值向Pandas数据框添加一列?

我有一个如下所示的熊猫数据框:

a     b    c    d   
0.7   0.1  0.2  0.3
0.5   0.2  0.2  0.2

我正在编写一些像下面这样的嵌套循环来添加基于这 4 列的列结果。

def class_decider(df):
    for i in df['a']:
        if i > 0.6:
            a = "class A"
        elif:
            for j in df['b']:
                if j > 0.2:
                    a = "class B"
                elif:
                    for k in df['c']:
                        if j > 0.15:
                            a = "class C"
                        elif:
                            for l in df['d']:
                                if l > 0.10:
                                    a = "class D"
                                else:
                                    a = "null"
    return a

任何人都可以帮助优化代码。

预期输出:

a     b    c    d     result
0.7   0.1  0.2  0.3   class A
0.5   0.2  0.2  0.2   class C

回答

IIUC,你可以比较的列abcd0.6, 0.2, 0.15, 0.10创建布尔面膜,然后用idxmax沿着axis=1这个面具得到,其中第一列的名称True值发生在面具。

c = ['a', 'b', 'c', 'd']
m = df[c].gt([0.6, 0.2, 0.15, 0.10])
df['Result'] = m.idxmax(1).radd('Class ').mask(~m.any(1), 'Null')

     a    b    c    d   Result
0  0.7  0.1  0.2  0.3  Class a
1  0.5  0.2  0.2  0.2  Class c


以上是如何根据不同列中的值向Pandas数据框添加一列?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>