首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Pandas没有提供使用.apply的选项?

为什么Pandas没有提供使用.apply的选项?
EN

Stack Overflow用户
提问于 2020-04-01 16:35:02
回答 1查看 220关注 0票数 2

我认为每个设计决策都是有原因的。许多熊猫函数(如df.dropdf.rename df.replace)都带有一个参数inplace。如果你把它设置为True,而不是返回一个新的数据,熊猫修改数据,嗯,就位。(这里没有任何意外;)

但是,我经常发现自己使用df.apply和lambda表达式来对列执行更复杂的操作。请考虑以下示例:

假设我有文本数据,需要对其进行预处理,以便进行情感分析。我会用:

代码语言:javascript
运行
复制
def remove_punctuation(text):
    no_punct = "".join([c for c in text if c not in string.punctuation])
    return no_punct

然后对我的专栏作如下修改:

代码语言:javascript
运行
复制
df['text'] = df['text'].apply(lambda x: remove_punctuation(x))

我最近注意到,.apply没有争论inplace=True。既然这个函数主要用于更新数据格式,为什么这样的参数不可用?这背后的理由是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-01 16:46:30

pandas.DataFrame.applypandas.Series.apply都从DataFrameSeries返回Series。在您的示例中,将其应用于Seriesinplace可能是有意义的。然而,在其他应用程序中,它不会这样做。

例如,df是:

代码语言:javascript
运行
复制
   col1  col2
0     1     3
1     2     4

做:

代码语言:javascript
运行
复制
s = df.apply(lambda x: x.col1 + x.col2, axis=1)

将返回一个与原始Series不同的类型和形状的DataFrame。在这种情况下,inplace参数没有多大意义。

我认为pandas开发人员希望增强pandas.DataFrame.applypandas.Series.apply之间的一致性,避免只在pandas.Series.apply中使用inplace参数所产生的混乱。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60975864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档