考虑下面的DataFrame
df = pd.DataFrame({'Make': ['Tesla','Tesla','Tesla','Toyota','Ford','Ford','Ford','BMW','BMW','BMW','Mercedes','Mercedes','Mercedes'],
'Type': ['Model X','Model X','Model X','Corolla','Bronco','Bronco','Mustang','3 Series','3 Series','7 Series','C-Class','C-Class','S-Class'],
'Year': [2015, 2015, 2015, 2017, 2018, 2018, 2020, 2015, 2015, 2017, 2018, 2018, 2020],
'Price': [85000, 90000, 95000, 20000, 35000, 35000, 45000, 40000, 40000, 65000, 50000, 50000, 75000],
'Color': ['White','White','White','Red','Blue','Blue','Yellow','Silver','Silver','Black','White','White','Black'],
'Code' : ['TSLA_BG','TSLA','-','TYTA','FRD','-_BG','-','-','BMW','BMW','Mercedes_BG','Mercedes_BG','Mercedes_BG']
})
df
Make Type Year Price Color Code
0 Tesla Model X 2015 85000 White TSLA_BG
1 Tesla Model X 2015 90000 White TSLA
2 Tesla Model X 2015 95000 White -
3 Toyota Corolla 2017 20000 Red TYTA
4 Ford Bronco 2018 35000 Blue FRD
5 Ford Bronco 2018 35000 Blue -_BG
6 Ford Mustang 2020 45000 Yellow -
7 BMW 3 Series 2015 40000 Silver -
8 BMW 3 Series 2015 40000 Silver BMW
9 BMW 7 Series 2017 65000 Black BMW
10 Mercedes C-Class 2018 50000 White Mercedes_BG
11 Mercedes C-Class 2018 50000 White Mercedes_BG
12 Mercedes S-Class 2020 75000 Black Mercedes_BG
我试图根据Make
列更新Code
列,如果Code
列有-
,则必须根据Code
列的其他值为同一Make
正确填充。换句话说,如果任何Make
具有在Code
列中定义的Code
,则该值应用于填充Code
列中的-
值,并且如果_BG
附加到相同Make
的任何代码值,所有的Code
值都应该附加上_BG
,用于相同的Make
。由于BMW
没有_BG
用于现有的BMW
代码值,因此在替换-
时,它不会附加_BG
。
预期输出为:
Make Type Year Price Color Code
0 Tesla Model X 2015 85000 White TSLA_BG
1 Tesla Model X 2015 90000 White TSLA_BG
2 Tesla Model X 2015 95000 White TSLA_BG
3 Toyota Corolla 2017 20000 Red TYTA
4 Ford Bronco 2018 35000 Blue FRD_BG
5 Ford Bronco 2018 35000 Blue FRD_BG
6 Ford Mustang 2020 45000 Yellow FRD_BG
7 BMW 3 Series 2015 40000 Silver BMW
8 BMW 3 Series 2015 40000 Silver BMW
9 BMW 7 Series 2017 65000 Black BMW
10 Mercedes C-Class 2018 50000 White Mercedes_BG
11 Mercedes C-Class 2018 50000 White Mercedes_BG
12 Mercedes S-Class 2020 75000 Black Mercedes_BG
1条答案
按热度按时间ix0qys7i1#
有点棘手,但它应该工作:
一步一步:
另一种方式: