pandas apply 和applymap 方法例子:

import pandas as pd
import numpy as np
from tqdm.notebook import tqdm_notebook  #进度条
# pip install ipywidgets

data = pd.DataFrame(
{"name":['Jack', 'Alice', 'Lily', 'Mshis', 'Gdli', 'Agosh', 'Filu', 'Mack', 'Lucy', 'Pony'],
"gender":['F', 'M', 'F', 'F', 'M', 'F', 'M', 'M', 'F', 'F'],
"age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]}
                     )
print(data)
#     name gender  age
# 0   Jack      F   25
# 1  Alice      M   34
# 2   Lily      F   49
# 3  Mshis      F   42
# 4   Gdli      M   28
# 5  Agosh      F   23
# 6   Filu      M   45
# 7   Mack      M   21
# 8   Lucy      F   34
# 9   Pony      F   29
def to_lower(x):
    if isinstance(x,str):
        return x.lower()
    else:
        return x
print(data.applymap(to_lower))  #对每个元素进行操作
#  name gender  age
# 0   jack      f   25
# 1  alice      m   34
# 2   lily      f   49
# 3  mshis      f   42
# 4   gdli      m   28
# 5  agosh      f   23
# 6   filu      m   45
# 7   mack      m   21
# 8   lucy      f   34
# 9   pony      f   29
da_rn = pd.DataFrame(
    {'A': np.random.randn(4),
     'B': np.random.randn(4)})

print(da_rn)
#           A         B
# 0  1.042323 -0.009742
# 1 -0.733035 -1.039617
# 2  0.150911 -0.053261
# 3 -0.415268 -0.934559
print(da_rn.applymap(lambda x: "{:.2%}".format(x))) #对每个元素进行操作
#          A         B
# 0  104.23%    -0.97%
# 1  -73.30%  -103.96%
# 2   15.09%    -5.33%
# 3  -41.53%   -93.46%
print('# 对 二维列表中的gender列进行操作,也可以不用lambda表达式,用函数:')
print(data.gender.apply(lambda x:'女性' if x is 'F' else '男性')) # 对 二维列表中的gender列进行操作
# 对 二维列表中的gender列进行操作,也可以不用lambda表达式,用函数:
# 0    女性
# 1    男性
# 2    女性
# 3    女性
# 4    男性
# 5    女性
# 6    男性
# 7    男性
# 8    女性
# 9    女性
# Name: gender, dtype: object
print('# 对 二维列表中的age列进行操作,也可以不用lambda表达式,用函数:')
print(data.age.apply(lambda x:'成人'*2 if x < 30 else '未成年'))
# # 对 二维列表中的age列进行操作,也可以不用lambda表达式,用函数:
# 0    成人成人
# 1     未成年
# 2     未成年
# 3     未成年
# 4    成人成人
# 5    成人成人
# 6     未成年
# 7    成人成人
# 8     未成年
# 9    成人成人
# Name: age, dtype: object
def fun_all(name, gender, age):
    gender == '女性' if gender == 'F'  else '男性'
    return '有个名字叫{0}的人,性别为{1},年龄为{2}。'.format(name, gender, age)



tqdm_notebook.pandas(desc='apply')

data.progress_apply(lambda row: fun_all(row['name'], row['gender'],
                                        row['age']), axis=1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值