map函数python pandas_对pandas中Series的map函数详解

Series的map方法可以接受一个函数或含有映射关系的字典型对象。

使用map是一种实现元素级转换以及其他数据清理工作的便捷方式。

(DataFrame中对应的是applymap()函数,当然DataFrame还有apply()函数)

1、字典映射

import pandas as pd

from pandas import Series, DataFrame

data = DataFrame({'food':['bacon','pulled pork','bacon','Pastrami',

'corned beef','Bacon','pastrami','honey ham','nova lox'],

'ounces':[4,3,12,6,7.5,8,3,5,6]})

meat_to_animal = {

'bacon':'pig',

'pulled pork':'pig',

'pastrami':'cow',

'corned beef':'cow',

'honey ham':'pig',

'nova lox':'salmon' }

data['animal'] = data['food'].map(str.lower).map(meat_to_animal)

data

data['food'].map(lambda x: meat_to_animal[x.lower()])

2、应用函数

In [579]: import pandas as pd

In [580]: from pandas import Series, DataFrame

In [581]: index = pd.date_range('2017-08-15', periods=10)

In [582]: ser = Series(list(range(10)), index=index)

In [583]: ser

Out[583]:

2017-08-15 0

2017-08-16 1

2017-08-17 2

2017-08-18 3

2017-08-19 4

2017-08-20 5

2017-08-21 6

2017-08-22 7

2017-08-23 8

2017-08-24 9

Freq: D, dtype: int64

In [585]: ser.index.map(lambda x: x.day)

Out[585]: Int64Index([15, 16, 17, 18, 19, 20, 21, 22, 23, 24], dtype='int64')

In [586]: ser.index.map(lambda x: x.weekday)

Out[586]: Int64Index([1, 2, 3, 4, 5, 6, 0, 1, 2, 3], dtype='int64')

In [587]: ser.map(lambda x: x+10)

Out[587]:

2017-08-15 10

2017-08-16 11

2017-08-17 12

2017-08-18 13

2017-08-19 14

2017-08-20 15

2017-08-21 16

2017-08-22 17

2017-08-23 18

2017-08-24 19

Freq: D, dtype: int64

In [588]: def f(x):

...: if x < 5:

...: return True

...: else:

...: return False

...:

In [589]: ser.map(f)

Out[589]:

2017-08-15 True

2017-08-16 True

2017-08-17 True

2017-08-18 True

2017-08-19 True

2017-08-20 False

2017-08-21 False

2017-08-22 False

2017-08-23 False

2017-08-24 False

Freq: D, dtype: bool

以上这篇对pandas中Series的map函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: 对pandas中Series的map函数详解

本文地址: http://www.cppcns.com/jiaoben/python/235431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值