目录
3.where()按条件修改 修改蓝方伤害小于9的为Fail
前言
Pandas 数据修改最强总结,详见思维导图;
一、 数据修改 loc与iloc
记忆公式:
单值修改:df.loc[行索引,列索引]
单行修改:df.loc[行索引]或df.iloc[行索引];
单列修改:df[列索引]、df.loc[:,列索引]或df.iloc[:,列索引]
按条件修改: df.loc[[筛选后的DataFrame].index,列索引]
1.单值修改 修改红方英雄刺客荆轲为李白
df=pd.DataFrame({'英雄属性':['刺客','射手','法师','战士','辅助'],
'红方英雄':['荆轲','卤蛋','甄姬','夏侯惇','项羽'],
'红方伤害':[11.20,15.34,8.57,6.98,3.69],
'红方死亡次数':['1次','10次','8次','5次','6次'],
'蓝方英雄':['赵云','马克','干将','吕布','刘禅'],
'蓝方伤害':[10.82,11.36,10.87,9.69,6.53],
'蓝方死亡次数':['5次','8次','4次','7次','10次']})
df.set_index('英雄属性',inplace=True)
df.loc['刺客','红方英雄']='李白'
df.iloc[0,0]='李白'
df.loc[df[df['红方英雄']=='荆轲'].index,'红方英雄']='李白'
df.iloc[0,0]='李白'
2.单行修改 修改辅助行为墨子
df.loc['辅助']='墨子'
df.iloc[4]='墨子'
3.单列修改 修改红方伤害为10
df.loc[:,'红方伤害']=10
df.iloc[:,1]=10
4.按条件修改 修改蓝方伤害大于11的为MVP
df.loc[df[df['蓝方伤害']>11].index,'蓝方伤害']='MVP'
二、数据修改 mask()与where()
mask()函数和where()函数结构相同,含义相反;
mask()对条件成立做处理,where()函数对条件不成立做处理;
均可以对Series和DataFrame数据进行处理;
记忆公式:
mask(条件判断,条件成立的值)
where(条件判断,条件不成立的值)
1.mask()单值修改 修改红方英雄刺客荆轲为李白
df['红方英雄'].mask(df['红方英雄']=='荆轲','李白')
2.mask()按条件修改 修改蓝方伤害大于11的为MVP
df['蓝方伤害'].mask(df['蓝方伤害']>11,'MVP')
3.where()按条件修改 修改蓝方伤害小于9的为Fail
df['蓝方伤害'].where(df['蓝方伤害']>9,'Fail')
三、数据修改 replace()
函数理解:
df.replace(to_replace=None,value=None,inplace=False,limit=None,regex=False,method='pad)
to_replace 查找要替换的值;
value 替换与查找匹配的值;
inplace 修改原数据;
limit 向前或向后填充的最大尺寸间隙;
regex 是否支持正则表达式;
method 替换方法;
1.replace()单值修改 将荆轲修改为李白
df.replace('荆轲','李白')
2.replace()多值修改 多个值修改为单个值
df.replace(['荆轲','卤蛋',8.57],'英雄')
3.replace()多值修改 多个值修改为多个值
df.replace(['荆轲','卤蛋',8.57],['李白','马克',9.99])
4.replace()多值修改 指定多列修改
df.replace({
'红方英雄':{'荆轲':'李白','卤蛋':'马克'},
'红方伤害':{8.57:9.99,3.69:5.55}
})
5.replace()正则表达式修改
replace()正则表达式修改,详见前期文章:
总结
总结一下Pandas数据修改的三中常用方法,loc与iloc方法;mask()与where()函数;replace()函数的用法,结合正则表达式,实现数据的快速处理。