将函数应用于数据框列?
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 函数? [关闭]