pandas36 df.applymap(func)将Dataframe元素应用于函数、map序列映射( tcy)

df.applymap(func)#将Dataframe元素应用于函数
    参数: func:Python函数从单个值返回单个值
    返回 :转换后DataFrame
============================================================
实例:
df = pd.DataFrame(np.arange(4).reshape(2,2),columns=['A1','A2'])
df.applymap(lambda x:x**2)

   A1  A2
0   0   1
1   4   9

format = lambda x: "%.2f" % x**2
df.applymap(format)

     A1    A2
0  0.00  1.00
1  4.00  9.00

# 注意func矢量化版要快得多,若存在最好避免使用applymap
df ** 2

   A1  A2
0   0   1
1   4   9

Series.map 2018/1/3

Series.map(arg,na_action =None)#用输入字典,系列或函数映射Series的值

参数: arg:function,dict或Series
      na_action : {None, 'ignore'}如'ignore'则传播NA值 

返回:系列; 与调用者相同的索引
 # 实例1:将输入映射到输出(两种类型系列)
x = pd.Series([1,2,3], index=['a1', 'a2', 'a3'])
y = pd.Series(['b1', 'b2', 'b3'], index=[1,2,3])#映射Series

#  x      y   x.map(y)
a1 1   1 b1   a1 b1
a2 2   2 b2   a2 b2
a3 3   3 b3   a3 b3 
# 实例2:映射字典
# 实例2.1:映射字典
x = pd.Series([1,2,3], index=['a1', 'a2', 'a3'])
y = {1: 'A', 2: 'B', 3: 'C'}
x.map(y)

a1 A
a2 B
a3 C

# 实例2.2:arg是字典时系列中不在字典中的值(作为键)将转换为NaN。
# 如字典是dict定义的子类__missing__(提供默认值方法)则用此默认值
from collections import Counter
counter = Counter()
counter['b2'] += 1
x= pd.Series(['b1', 'b2', 'b3'], index=[1,2,3])
x.map(counter)

1 0
2 1
3 0
dtype: int64 
#实例3:na_action控制NA值是否受映射函数影响
s1 = pd.Series([1, 2, 3, np.nan])
s2 = s.map('s={}'.format, na_action=None)
s3 = s.map('s={}'.format, na_action='ignore')

# s1       s2      s3
0 1.0 0 s=1.0 0 s=1.0
1 2.0 1 s=2.0 1 s=2.0
2 3.0 2 s=3.0 2 s=3.0
3 NaN 3 s=nan 3 NaN
dtype: float64 dtype: object dtype: object 
data= pd.DataFrame({'item': [ 'S1' , 's2', 'S1' ,'s3','s4', 'S1' ,'s3' ,'S5' ,'s6' ],
                                   'value' : [10,11,12,13,14,15,16,17,18]})
dict_data = {'s1':'v1','s2':'v1','s3':'v2' ,'s4' :'v2','s5': 'v1','s6' :'v3' }

data['A'] = data['item'].map(str.lower).map(dict_data)
result=data ['item'].map(lambda x: dict_data[x.lower()])

# data                  data                  result
  item  value          item  value   A         0    v1
0   S1     10        0   S1     10   v1        1    v1
1   s2     11        1   s2     11   v1        2    v1
2   S1     12        2   S1     12   v1        3    v2
3   s3     13        3   s3     13   v2        4    v2
4   s4     14        4   s4     14   v2        5    v1
5   S1     15        5   S1     15   v1        6    v2
6   s3     16        6   s3     16   v2        7    v1
7   S5     17        7   S5     17   v1        8    v3
8   s6     18        8   s6     18   v3        Name: item, dtype: object

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/85700845
今日推荐