#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.индекс сработал