Pandas — хотите создать новую переменную на основе последнего появления элемента в ссылочной переменной?

#pandas #jupyter-notebook

#pandas #jupyter-notebook

Вопрос:

У меня есть фрейм данных:-

    col count
0  B   1
1  B   2
2  A   1 
3  A   2
4  A   3
5  C   1
6  C   2
7  C   3
8  C   4
  

wan для создания новой переменной с именем Flag в соответствии с последним появлением B , A в переменной col. ссылка df:-

    col count  Flag
0  B   1      0
1  B   2      1 
2  A   1      0
3  A   2      0
4  A   3      1
5  C   1      0
6  C   2      0
7  C   3      0
8  C   4      1
  

TIA

Ответ №1:

Используйте Series.duplicated с numpy.where :

 df['Flag'] = np.where(df['col'].duplicated(keep='last'), 0, 1)
  

Или Series.view с инвертирующей маской с помощью ~ :

 df['Flag'] = (~df['col'].duplicated(keep='last')).view('i1')
  

 print (df)
  col  count  Flag
0   B      1     0
1   B      2     1
2   A      1     0
3   A      2     0
4   A      3     1
5   C      1     0
6   C      2     0
7   C      3     0
8   C      4     1