python - 我想根据前一列添加一个新的 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
解决方案
试试这个,
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