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)
pandas apply 和applymap 方法例子:
最新推荐文章于 2022-10-16 21:25:04 发布