Я намагаюся отримати доступ до індексу рядка у функції, застосованій у цілому DataFrame
в Pandas. У мене є щось подібне:
df = pandas.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])
>>> df
a b c
0 1 2 3
1 4 5 6
і я визначу функцію, яка отримує доступ до елементів із заданим рядком
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Я можу це застосувати так:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
Дивовижно! Що робити, якщо я хочу включити індекс у свою функцію? Індекс будь-якого даного рядка в цьомуDataFrame
перед додаванням d
буде Index([u'a', u'b', u'c', u'd'], dtype='object')
, але я хочу 0 і 1. Тому я не можу просто отримати доступ row.index
.
Я знаю, що міг би створити тимчасовий стовпець у таблиці, де я зберігаю індекс, але мені цікаво, чи він десь зберігається в рядковому об’єкті.
apply
? Це набагато повільніше, ніж виконувати векторизовані ОПС на самому кадрі. (Іноді застосовувати - це найпростіший спосіб зробити щось, а міркування щодо ефективності часто перебільшені, але для вашого конкретного прикладу це так само просто не використовувати.)