Tôi đang cố gắng truy cập chỉ mục của một hàng trong một hàm được áp dụng trên toàn bộ DataFrame
trong Pandas. Tôi có một cái gì đó như thế này:
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
và tôi sẽ xác định một hàm truy cập các phần tử có một hàng nhất định
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Tôi có thể áp dụng nó như vậy:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
Tuyệt vời! Bây giờ nếu tôi muốn kết hợp chỉ mục vào hàm của mình thì sao? Chỉ mục của bất kỳ hàng nhất định nào trong hàng này DataFrame
trước khi thêm d
sẽ là Index([u'a', u'b', u'c', u'd'], dtype='object')
, nhưng tôi muốn 0 và 1. Vì vậy, tôi không thể truy cập row.index
.
Tôi biết tôi có thể tạo một cột tạm thời trong bảng nơi tôi lưu chỉ mục, nhưng tôi đang tự hỏi liệu nó có được lưu trữ trong đối tượng hàng ở đâu đó hay không.
apply
không? Nó chậm hơn nhiều so với việc thực hiện các hoạt động được vector hóa trên chính khung hình. (Đôi khi áp dụng là cách đơn giản nhất để làm điều gì đó, và cân nhắc hiệu suất thường được phóng đại, nhưng ví dụ cụ thể của bạn nó cũng dễ dàng không sử dụng nó.)