2014-02-12 5 views
0

Я думаю, это дубликат Find element's index in pandas Series.Pandas: получить индекс каждого элемента

Это мой dataframe;

 WORD1 CAT1 
    elephant animal 
     lion animal 
     tiger animal 
     hoopoe bird 
    hornbill bird 
    sunflower flower 
     rose flower 
    giraffe animal 
     zebra animal 
    sparrow bird 
     duck animal 

Я хотел бы получить индекс каждого элемента из «CAT1»;

Позвольте мне сказать так;

for d in data['CAT1']: 
    print data[data['CAT1'] == d].index[0] 
... 
0 
0 
0 
3 
3 
5 
5 
0 
0 
3 
0 

Приведенное выше возвращает индекс, но колеблется, когда есть дубликаты. Как мне это исправить?

+0

Для будущих читателей этого вопроса вы могли бы обновиться, чтобы быть более четкими о том, что вы на самом деле хотите * в качестве вывода? «получить индекс каждого элемента из« CAT1 »» является неоднозначным. Вы хотите индексом * first * каждой отдельной записи в 'CAT1' или хотите присвоить каждому отдельному элементу номер и заменить текст на этот номер? – LondonRob

ответ

1

Вы можете enumerate в Python, чтобы получить индексы вместе с деталями:

for i, d in enumerate(data['CAT1']): 
    print(i) 

Если вы хотите, чтобы выбрать из WORD1 по CAT1, вы можете zip их, например:

birds = [w for w, c in zip(data['WORD1'], data['CAT1']) if c == "bird")] 

Примечание: str.index - это метод поиска индекса подстроки внутри строки.

+0

oops ... dupid of me ... отредактировал свой вопрос – richie

+0

Как вы видели, 'list.index' дает вам только первый индекс *. Не совсем ясно, чего вы пытаетесь достичь; вы пробовали предложения в своем ответе? – jonrsharpe

+0

@jonrharpe да. Пробовал. Имеет смысл. Но я ищу что-то вроде этого http://stackoverflow.com/q/18327624/1948860 – richie

Смежные вопросы