处理元素
函数/功能 |
所属对象函数 |
作用域 |
|
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*
'''