我理解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时是可互换的吗?
供参考,从文档:
例如,map使用dict,apply使用func,但实际上,它们看起来是一样的吗?两者都可以使用一个函数。
发布于 2020-09-01 20:43:27
Series.map的另一段提到,Series.apply用于在一个系列中应用更复杂的函数。
如果对于一对一的关系,可以用字典或返回一个值的一个参数的函数来表示Series.map。
Series.apply可以使用返回多个参数的函数(实际上是一个完整的Series)。在这种情况下,Series.apply的结果将是一个DataFrame。
换句话说,您总是可以在使用apply的地方使用map。如果您将一个dict (例如d)传递给map,您可以传递一个简单的lambda来应用:lambda x: d[x]。但是,如果使用apply将Series转换为DataFrame,则不能使用map。
因此,map可能会进行更多的优化,从而适用于一对一的转换,并且应该尽可能地使用而不是apply。
https://stackoverflow.com/questions/63694785
复制相似问题