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.Seriesapply 用于pd.DataFrame,但是mapapply 用于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 使用dictapply 使用func,但实际上,它们看起来一样吗?两者都可以使用函数。

【问题讨论】:

【参考方案1】:

Series.map另见段说Series.apply用于在系列上应用更复杂的功能。

Series.map如果是一对一关系,可以用字典或一个参数返回一个值的函数来表示。

Series.apply 可以使用返回多个单个参数的函数(实际上是整个Series)。在这种情况下,Series.apply 的结果将是 DataFrame

换句话说,您始终可以在使用map 的地方使用apply。如果你将一个字典(比如d)传递给map,你可以传递一个简单的lambda来应用:lambda x: d[x]。但是如果你用applySeries变成DataFrame,那么map就不能用了。

因此,map 可能会更优化以适用于一对一的转换,因此应尽可能使用而不是 apply

【讨论】:

另外,索引只能用map不能应用

以上是关于Series.map 和 Series.apply 之间的区别 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

pandas数组(pandas Series)-apply方法自定义函数

如何将嵌套字典与 .map 一起用于 Pandas 系列? pd.Series([]).map

python pandas:将带有参数的函数应用于系列

pandas.DataFrame.loc好慢,怎么遍历访问DataFrame比较快

如何按升序对 x 轴进行排序?

Spark MLlib 中的列转换