首页 > 解决方案 > 在熊猫中使用函数(或其他方式)更改列的正确方法

问题描述

我正在尝试学习熊猫并以熊猫的方式做事。我有一个 DataFrame,我想在其中对某些列应用某种功能。我做了一些可行的事情,但我想知道这是一种熊猫方式,或者它是否“错误”。问题是我的数据框现在大约有 400 000 行和 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 这样的浮点数

标签: pythonpandasdataframe

解决方案


推荐阅读