将功能应用于数据框列?

时间:2019-11-27 22:59:12

标签: python pandas function one-hot-encoding

我具有以下功能(单列热编码功能,将一列作为输入)。我基本上想将其应用于数据框中的一列,但似乎无法理解问题所在。

def dummies(dataframe, col):
    dataframe[col] = pd.Categorical(dataframe[col])
    pd.concat([dataframe,pd.get_dummies(dataframe[col],prefix = 'c')],axis=1)

df1 = df['X'].apply(dummies)

猜猜我的说法有问题吗?

2 个答案:

答案 0 :(得分:2)

您需要确保从函数中返回一个值,当前您不是。.而且,当您将函数应用于列时,您基本上是将列中每一行的值传递给函数,因此您的函数设置有误。通常,您会这样做:

def function1(value):
    new_value = value*2 #some operation
    return new_value

然后:

df['X'].apply(function1)

当前,您的函数设置为使用整个df和一列的名称,因此,如果您这样调用它,则函数可能会起作用:

df1 = dummies(df, 'X')

但是您仍然需要添加一个return语句

答案 1 :(得分:-1)

如果要将其应用于该列,则无需创建新的数据框。这是正确的语法。 Please read the docs

df['X'] = df['X'].apply(lambda x : dummies(x))