Python Pandas Series.apply()和Series.map()之间有什么区别? :
使用输入对应关系映射序列值(可以是dict、序列或函数) 对系列的值调用函数。可以是ufunc(一个应用于整个系列的NumPy函数)或只对单个值起作用的Python函数Python Pandas Series.apply()和Series.map()之间有什么区别? :,python,numpy,vectorization,Python,Numpy,Vectorization,使用输入对应关系映射序列值(可以是dict、序列或函数) 对系列的值调用函数。可以是ufunc(一个应用于整个系列的NumPy函数)或只对单个值起作用的Python函数 apply()。同时,map()允许对空值处理进行一定程度的控制。除了历史上类似于Python的apply()和map()函数之外,在一般使用中,是否有理由选择其中一个函数?为什么不将这些功能组合起来?差别很微妙: pandas.Series.map将用传递到map中的内容替换序列的值 pandas.Series.apply将对
apply()。同时,map()
允许对空值处理进行一定程度的控制。除了历史上类似于Python的apply()
和map()
函数之外,在一般使用中,是否有理由选择其中一个函数?为什么不将这些功能组合起来?差别很微妙:
pandas.Series.map
将用传递到map
中的内容替换序列的值
pandas.Series.apply
将对序列的值应用函数(可能带有参数)
区别在于可以传递给方法的内容
map
和apply
都可以接收以下功能:
s=pd.系列([1,2,3,4])
def方形(x):
返回x**2
s、 地图(广场)
0 1
1 2
2 3
3 4
数据类型:int64
s、 应用(方形)
0 1
1 2
2 3
3 4
数据类型:int64
- 但是,传递到
map
的函数不能有多个参数(它将输出ValueError
):
def电源(x,p):
返回x**p
s、 应用(功率,p=3)
0 1
1 8
2 27
3 64
数据类型:int64
s、 地图(电源,3)
---------------------------------------------------------------------------
数值误差
map
可以接收字典(甚至是pd.Series
,在这种情况下,它将使用索引作为键),而apply
不能(它将输出TypeError
)
dic={1:5,2:4}
s、 地图(dic)
0 5.0
1 4.0
2楠
3南
数据类型:64
s、 申请(dic)
---------------------------------------------------------------------------
打字错误
s、 地图(s)
0 2.0
1 3.0
2 4.0
3南
数据类型:64
s、 申请
---------------------------------------------------------------------------
打字错误
afaik Series.map(func)无法将其他参数传递给func。当使用Series.apply(func)时,可以执行sr.apply(func,convert_dtype=True,arg2='foo',arg3=True),Series.apply()无法识别的任何关键字参数都将传递给func,在这种情况下,arg2='foo'和arg3=True。@xg.plt.py另一个问题的上下文是数据帧,而不是Series对象(因此,这种情况下的相似性更为深刻)