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

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

你可能感兴趣的:(DataFrame,Pandas,python)