在熊猫中使用函数更改列的正确方法(或另一种方法)

时间:2020-04-24 20:52:54

标签: python pandas dataframe

我正在尝试学习熊猫并以熊猫的方式做事。我有一个DataFrame,我想在其中将某种函数应用于某些列。我做了一些可行的事情,但是我想知道那是熊猫的方式,还是“错误”的。关键是我的数据框现在大约有40万行21列,但实际上会比现在大,所以我想做所有“最好的”方法。 我举个例子。我想对DataFrame进行操作,并对该列的每一行应用一个函数,该函数使用其他列的值,但再次使用同一行的值。这或多或少是我的工作,这行得通,但是熊猫在想吗?有一种有效的方法可以执行这样的操作吗?

def resultWohKomi(orders,outcomes,komis):  # outcomes and komis are floats
    try:   
        result = orders[1] # order is a [1,0] or [0,1]
        when_black_win_then_positive_else_negative = 2*result-1
        points =  when_black_win_then_positive_else_negative*(outcomes + komis)
        if points > 0:
            result = [1,0]
        else:
            result = [0,1]
        return result
    except:       
        return orders

Type_new = df.apply(lambda x: resultWohKomi(x.order,x.outcome,x.komi), axis=1)
df.insert(2, "results",Type_new) 

df.order为[1,0]或[0,1](整数列表)

df.outcome是像19.0这样的浮点数

df.komi是6.5之类的浮点数

0 个答案:

没有答案