2016-08-02 3 views
2

В пандах можно указать номер строки для функции. Я не говорю о .iloc.Функция, которая зависит от номера строки

iloc занимает местоположение, то есть номер строки, и возвращает значение dataframe.

Я хочу получить доступ к номеру местоположения в кадре данных.

Например, если функция находится в ячейке с тремя строками вниз и двумя столбцами в поперечнике, я хочу способ вернуть целое число 3. Не запись, находящаяся в этом месте.

Спасибо.

+0

Можете ли вы привести пример с фактическим DataFrame? –

+0

Может ли это быть полезным? http://stackoverflow.com/questions/18199288/getting-the-integer-index-of-a-pandas-dataframe-row-fulfilling-a-condition –

+1

Я думаю, что вам нужно ['get_loc'] (http: // pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.get_loc.html) – jezrael

ответ

1

Рассмотрим dataframe df

df = pd.DataFrame([[1, 2], [3, 4]], ['a', 'b'], ['c', 'd']) 

df 

enter image description here

и строчный row

row = df.ix['a'] 

row 

c 1 
d 2 
Name: a, dtype: int64 

Там нет ничего об этой строке, которая указывает, что это был первый ряд df. Эта информация по существу потеряна ... вроде.

Вы можете взять @ совет jezrael и использовать get_loc

df.index.get_loc(row.name) 

0 

Но это работает только, если ваш индекс уникален.

Ваш единственный вариант - отслеживать его положение, когда вы его получите. Лучший способ сделать это:

Использование enumerate на df.iterrows()

for i, (idx, row) in enumerate(df.iterrows()): 
    print "row position: {:>3d}\nindex value: {:>4s}".format(i, idx) 
    print row, '\n' 

row position: 0 
index value: a 
c 1 
d 2 
Name: a, dtype: int64 

row position: 1 
index value: b 
c 3 
d 4 
Name: b, dtype: int64 
0

К сожалению, я не смог добавить образец кода, но им на моем телефоне. piRSquared подтвердил мои опасения, когда он сказал, что информация потеряна. Мне кажется, что нужно делать цикл каждый раз или добавить столбец с числами (который будет скремблироваться, если я их сортирую: /).

Спасибо всем.

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