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

根据条件对另一列的值进行修改

  • 1.根据单一条件重新赋值
  • 2.多个条件,两种对应值
  • 3.两种以上对应值
  • 4.更多的对应值(直接使用表联接 类似于EXCEL的VLOOKUP功能)
  • 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

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

    来源:Plus613

    物联沃分享整理
    物联沃-IOTWORD物联网 » pandas.dataFrame按条件修改列的值(4种方式)

    发表评论