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