【问题标题】:Applying function to dataframe column?将函数应用于数据框列?
【发布时间】:2020-03-23 13:28:33
【问题描述】:

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

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)

猜我怎么称呼它有问题?

【问题讨论】:

  • 你试过这样称呼它吗:df1 = dummies(df, 'X')
  • 你需要返回一个值 .. 应该可以修复它,虽然我无法在没有示例 df 的情况下对其进行测试

标签: python pandas function one-hot-encoding


【解决方案1】:

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

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

然后:

df['X'].apply(function1)

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

df1 = dummies(df, 'X')

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 如果他们想用结果制作一个新的df怎么办
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
相关资源
最近更新 更多