微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我想基于上一列添加一个新的DataFrame列,以便如果上一列元素与列表值匹配,请更改该值

如何解决我想基于上一列添加一个新的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

解决方法

尝试一下

git log --pretty=format:"%s" master..HEAD

git log --pretty=format:"- %s" master..HEAD

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

以防万一拆分不匹配(例如:ravel),可以先A_Fruit_100然后extract

replace

s = pd.Series(list1)
d = dict(zip(s.str.extract('('+'|'.join(df['col1'])+')',expand=False),s))
df['col22'] = df['col1'].replace(d)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。