将函数应用于数据框列?

Applying function to dataframe column?

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

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)

猜猜我的调用方式有问题吗?

如果你想将它应用到那一列,你不需要制作一个新的数据框。这是正确的语法。 Please read the docs.

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

您需要确保您 return 从函数中获取值,目前您不是..当您将函数应用于列时,您基本上是在传递每一行的值函数中的列,所以你的函数设置错误..通常你会这样做:

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

然后:

df['X'].apply(function1)

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

df1 = dummies(df, 'X')

但您仍然需要添加 return 声明