将函数应用于数据框列?

Posted

技术标签:

【中文标题】将函数应用于数据框列?【英文标题】: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 的情况下对其进行测试 【参考方案1】:

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

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

然后:

df['X'].apply(function1)

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

df1 = dummies(df, 'X')

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

【讨论】:

谢谢 Derek,真不敢相信我错过了退货声明。附带问题..是否可以将此功能应用于一行中的多个列? 喜欢将相同的功能分别应用于多个列吗?还是应用一个使用多列作为输入的函数? 在任何一种情况下,检查这些问题,它们都涵盖:***.com/questions/50519983/… 和 ***.com/questions/13331698/…【参考方案2】:

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

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

【讨论】:

如果他们想用结果制作一个新的df怎么办

以上是关于将函数应用于数据框列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在大量数据框列上应用我的 single_space 函数? [关闭]

如何将 lambda 函数正确应用到 pandas 数据框列

特定数据框列上的 R Apply() 函数

应用字典查找功能来比较熊猫数据框列

将函数应用于两列并将输出映射到新列[重复]

如何在熊猫数据框中使用应用时创建列时间戳?