欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 14:17:33
...

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 python