pandas.dataFrame按条件修改列的值(4种方式)

1.根据单一条件重新赋值

df.loc[df[column1]=='A',['column2']]='B'

2.多个条件,两种对应值

如果column1符合A或B条件,对应的’plus’列删除的前7个字段

//方法一  'and = &' , 'or = |' , ' not = ~'
df[new_column]= df['plus'].map(lambda x: str(x)[7:])
df[column]=np.where((df[column1] == 'A')|(df1[column2] == 'B'),df[new_column], df[old_column])
//方法二  
df[column]=df.apply (lambda x: x.plus[7:] if (df[column1] == 'A')|(df1[column2] == 'B')  else x.column, axis=1)

方法二也可以可以应用于01编码

//01验证  
df['01验证'] = df.apply(lambda x:1 if x == A  else 0)

3.两种以上对应值

这个时候就运用if elif

def label(df):
    if df[column] == A:
        return df['A']
    elif df[column] == B:
        return df['B']
    elif df[column] == C: 
        return df['C']
    elif df[column] == D: 
        return df['D']
    else:
        return 0
df['column']=df.apply(label,axis=1)

4.更多的对应值(直接使用表联接 类似于EXCEL的VLOOKUP功能)

直接使用表联接 类似于EXCEL的VLOOKUP功能
df1:

辅助列对应值
中芯国际¥56
兆易创新¥300
北方华创¥370
五粮液¥200
宁德时代¥500

df0:

行业辅助列
芯片中芯国际
芯片兆易创新
芯片北方华创
饮料五粮液
电池宁德时代
#读取辅助表
df1 = pd.read_excel('辅助.xlsx',header=0)
df = pd.merge(df0,df1[:,['辅助列','对应值']],how='left',on = '辅助列')

df:

行业辅助列对应值
芯片中芯国际¥56
芯片兆易创新¥300
芯片北方华创¥370
饮料五粮液¥200
电池宁德时代¥500

以上是针对列值修改积累的一些方法,希望可以帮助到大家,有未涉及到的地方可以留言补充,谢谢!

  • 29
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值