创建按输入列名遍历行的函数

时间:2019-02-14 11:54:23

标签: python pandas function

尝试使用一个函数对多个数字特征进行装箱并将其应用于数据框。

这是我当前的代码,适用于1个特定列:

bins = [0,2,9,40,30000]

# create bin function that transforms values based on bins.

def bin(row):
    if row.cb <= bins[1]:
        val = 0
    elif row.cb <= bins[2]:
        val = 1
    elif row.cb <= bins[3]:
        val = 2
    elif row.cb <= bins[4]:
        val = 3
    return val

X['cb_bin'] = X.apply(bin, axis=1)

由于对pd.qcut遇到了麻烦,因此我手动对数值特征进行了合并。列表箱具有存储的箱的值。当前,为“ cb”列中的每一行创建bin值。应用该函数时,我将使用转换后的bin值创建一个新列。

但是,我需要对多个数字功能执行此操作,而不是单独使用“ cb”。我需要如何更改代码,以便在调用bin函数时可以输入列名。

我已经尝试过了:

def bin(row, col):
    if row.col <= bins[1]:
        val = 0
    elif row.col <= bins[2]:
        val = 1
    elif row.col <= bins[3]:
        val = 2
    elif row.col <= bins[4]:
        val = 3
    return val

X['cb_bin'] = X.apply(bin(row, cb), axis=1)

不幸的是,这不起作用。有人可以帮我吗?

0 个答案:

没有答案