处理元素

函数/功能 所属对象函数 作用域
map Series对象的一个函数 作用于Series对象的每一个函数 单个Series
apply dataframe dataframe上的任意一列或多列,或者任意一行或者多行 多列或者多行
applymap dataframe dataframe的所有元素 整个dataframe

map

# 1.map(...): map()是Series对象的一个函数,DataFrame中没有map()。
# map()的功能: 将一个自定义函数作用于Series对象的每个元素。
# 新增一列,是key2列的元素转变而来。 x = 'k:' + str(x)
df['new'] = df['key2'].map(lambda x: 'k:' + str(x))
print(df)
"""
    key1    key2    key3  key4  new
0   a       one     0     5     k:one
1   b       two     1     6     k:two
2   c       three   2     7     k:three
3   d       four    3     8     k:four
"""

apply

# 2.apply只是整个dataframe上任意一列或多列,或者一行或多行,
# 即可在任意轴操作。 在一列使用apply时,跟map效果一样。
# 多列时只能用apply。

# 需求:计算每行key3和key4的和,并生成新列 total
df['total'] = df[['key3', 'key4']].apply(lambda x: x.sum(), axis=1)
print(df)
'''
    key1   key2  key3  key4      new  total
0    a    one     0     5    k:one      5
1    b    two     1     6    k:two      7
2    c  three     2     7  k:three      9
3    d   four     3     8   k:four     11
'''

# 需求:分别计算key3和key4的总和,生成新的total行
df.loc['total'] = df[['key3', 'key4']].apply(lambda x: x.sum(), axis=0)
print(df)
''' >>> df
    key1   key2  key3  key4      new  total
0    a    one   0.0   5.0    k:one    5.0
1    b    two   1.0   6.0    k:two    7.0
2    c  three   2.0   7.0  k:three    9.0
3    d   four   3.0   8.0   k:four   11.0
total  NaN    NaN   6.0  26.0      NaN    NaN
'''

applymap

# 3.applymap
# applymap()函数的功能是将自定义函数作用于DataFrame的所有元素
def str_format(n):
    return '*' + str(n) + '*'
df = df.applymap(str_format)
print(df)
'''
key1     key2   key3    key4        new   total
0        *a*    *one*  *0.0*   *5.0*    *k:one*   *5.0*
1        *b*    *two*  *1.0*   *6.0*    *k:two*   *7.0*
2        *c*  *three*  *2.0*   *7.0*  *k:three*   *9.0*
3        *d*   *four*  *3.0*   *8.0*   *k:four*  *11.0*
total  *nan*    *nan*  *6.0*  *26.0*      *nan*   *nan*
'''