Series.map 和 Series.apply 之间的区别 [重复]
Posted
技术标签:
【中文标题】Series.map 和 Series.apply 之间的区别 [重复]【英文标题】:Difference between Series.map and Series.apply [duplicate] 【发布时间】:2020-12-20 23:43:31 【问题描述】:我了解map
用于pd.Series
和apply
用于pd.DataFrame
,但是map
和apply
用于pd.Series
有什么区别?在我看来,他们基本上做同样的事情:
>>> df['title'].map( lambda value: str(value) + 'x')
>>> df['title'].apply(lambda value: str(value) + 'x')
似乎两者都只是向函数/映射发送一个值。两者之间是否存在实际差异,如果是,那么将是一个显示它的例子吗?或者,这些在应用于pd.Series
时是否可以互换?
供参考,来自文档:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.apply.html例如map
使用dict
和apply
使用func
,但实际上,它们看起来一样吗?两者都可以使用函数。
【问题讨论】:
【参考方案1】:Series.map
的另见段说Series.apply
是用于在系列上应用更复杂的功能。
Series.map
如果是一对一关系,可以用字典或一个参数返回一个值的函数来表示。
Series.apply
可以使用返回多个单个参数的函数(实际上是整个Series
)。在这种情况下,Series.apply
的结果将是 DataFrame
。
换句话说,您始终可以在使用map
的地方使用apply
。如果你将一个字典(比如d
)传递给map
,你可以传递一个简单的lambda来应用:lambda x: d[x]
。但是如果你用apply
把Series
变成DataFrame
,那么map
就不能用了。
因此,map
可能会更优化以适用于一对一的转换,因此应尽可能使用而不是 apply
。
【讨论】:
另外,索引只能用map不能应用以上是关于Series.map 和 Series.apply 之间的区别 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
pandas数组(pandas Series)-apply方法自定义函数
如何将嵌套字典与 .map 一起用于 Pandas 系列? pd.Series([]).map