df.where np.where 与applymap的应用

import pandas as pd
impodt numpy  as np
替换
①df.where:替换不满足条件的值
②df.mask :替换满足条件的值
③np.where:替换满足条件的值
④df.loc[条件,列名]=替换的值
df.where('cond', 'other', inplace=False)
df.mask('cond','other',inplace=False)
cond:条件
other:需要替换的值
inplace:是否在原有的数据上进行替换
where 与mask 相反 
np.where(条件,原来的数据,需要替换的数据)

df = pd.DataFrame({'AAA': [4, 5, 6, 7],
   'BBB': [10, 20, 30, 40],
   'CCC': [100, 50, -30, -50]})
df
AAA BBB CCC
0 4 10 100
1 5 20 50
2 6 30 -30
3 7 40 -50
df_mask = pd.DataFrame({'AAA': [True] * 4,
   'BBB': [False] * 4,
   'CCC': [True, False] * 2})
df_mask
AAA BBB CCC
0 True False True
1 True False False
2 True False True
3 True False False

① df.where(df_mask,1000) 将标记为False的替换为1000

AAA BBB CCC
0 4 1000 100
1 5 1000 1000
2 6 1000 -30
3 7 1000 1000

② df.mask(df_mask,1000) 将标记为True的替换为1000

AAA BBB CCC
0 1000 10 1000
1 1000 -1 50
2 1000 -1 1000
3 1000 -1 -50

③ np.where(df_mask,df,1000) 将所有标记为False的替换为1000

0 1 2
0 4 1000 100
1 5 1000 1000
2 6 1000 -30
3 7 1000 1000

④ df.loc[df.AAA>4,‘BBB’]=1000 将满足条件的某列进行替换

AAA BBB CCC
0 4 10 100
1 5 1000 50
2 6 1000 -30
3 7 1000 -50

applymap的使用

df = pd.DataFrame({'AAA': [1, 2, 1, 3],
                  'BBB': [1, 1, 2, 2],
                  'CCC': [2, 1, 3, 1]})
df
AAA BBB CCC
0 1 1 2
1 2 1 1
2 1 2 3
3 3 2 1
source_cols=df.columns
new_cols=[str(x)+'_cat' for x in source_cols]    
categories = {1: 'Alpha', 2: 'Beta', 3: 'Charlie'}
df[new_cols]=df[source_cols].applymap(categories.get)
AAA BBB CCC AAA_cat BBB_cat CCC_cat
0 1 1 2 Alpha Alpha Beta
1 2 1 1 Beta Alpha Alpha
2 1 2 3 Alpha Beta Charlie
3 3 2 1 Charlie Beta Alpha
上一篇:str函数


下一篇:锐捷网络SuperWi-Fi会场保障服务 轻松搞定“万人互动”