pandas.Series.map()是对python原生map的封装。
可以区别传入的是dict还是func。
如果是dict,和python原生map一致,逐个将series的元素作为key从dict中取值。
如果是func,则是逐个将series的元素,作为input输入func中,取得返回值。
map是对Series的,所以只能df['某一列'].map(dict or func)。
apply是对Dataframe的,所以只能df.apply(func,axis)。
apply通过设置axis=1(每次给一行,可以对该行的列访问),axis=0(每次给一列,可以对该列的每行访问),来实现【类似于series】的操作。
值得一提的是,在axis=1时,依然可以将第i行视为一个小的dataframe,能使用column属性。
df['round'] = df.apply(
lambda x: get_round(x['change_type'], x['price'], x['changed']),
axis=1)
例子来源于
@诸葛老刘 ,《pandas map(), apply(), applymap() 区别解析,https://blog.csdn.net/weixin_39791387/article/details/81487549
map和apply都支持lambda匿名函数。
apply中的匿名函数,是将每一行(或者每一列)作为输入,取决于axis参数的值。 上文已给sample。
map中的匿名函数,是将series的每一个元素作为输入。
举例:
将time这一列的元素逐个输入,获取“日”这个数据。
df['day'] = df['time'].map(lambda x: time.localtime(x).tm_mday)