首页 > 解决方案 > 我想根据前一列添加一个新的 DataFrame 列,这样如果前一列元素与列表值匹配,则更改值

问题描述

输入df

Index       col1
0     Img    
1     Fruit  
2     Img    
3     Ball    
4     Ball    
5     Fruit    
6     shirt    
7     Fruit 

映射列表以输入 df

list1 = ['Img_A_10', 'Fruit_A_100', 'Ball_B_120']

输出df

     col1      col22
0     Img    Img_A_10
1     Fruit  Fruit_A_100
2     Img    Img_A_10
3     Ball   Ball_B_120
4     Ball   Ball_B_120
5     Fruit  Fruit_A_100  
6     shirt  shirt         
7     Fruit  Fruit_A_100

标签: pythonpandasnumpydataframe

解决方案


试试这个,

df['col2'] = df.col1.map({k.split("_")[0]: k for k in list1}).fillna(df.col1)

或者

df['col2'] = df.col1.replace({k.split("_")[0]: k for k in list1})

df
Out[93]: 
    col1         col2
0    Img     Img_A_10
1  Fruit  Fruit_A_100
2    Img     Img_A_10
3   Ball   Ball_B_120
4   Ball   Ball_B_120
5  Fruit  Fruit_A_100
6  shirt        shirt
7  Fruit  Fruit_A_100

推荐阅读