Найти первое вхождение каждого значения в столбце

#pandas

#pandas

Вопрос:

Учитывая серию Pandas, я хочу сгенерировать новую серию, в которой хранится индекс первого вхождения значения в серии.

Пример: Дано

    A  
0  1  
1  2  
2  3  
3  2  
4  1  
  

Я хочу, чтобы результат был

    A  B
0  1  0
1  2  1
2  3  2
3  2  1
4  1  0
  

Комментарии:

1. df['B'] = pd.factorize(df['A'])[0]

2. Если индекс не имеет целочисленного типа, то это создает проблему. Я не могу этого сделать df['B'] = df.index[pd.factorize(df['A'])[0]] , поскольку это привело бы к неправильному индексу.

Ответ №1:

Давайте попробуем

 df['B'] = pd.factorize(df['A'])[0]
  

Комментарии:

1. Если индекс не имеет целочисленного типа, то это создает проблему. Я не могу выполнить df[‘B’] = df.index[pd.factorize(df[‘A’])[0]], поскольку это привело бы к неправильному индексу.

2. @djin31 df.merge(df.drop_duplicates().reset_index(),как=’осталось’)

3. z = df.merge(df.drop_duplicates().reset_index(),how='left') с последующим сбросом индекса z, чтобы он был таким же, как df.индекс сработал