Saya mencoba mengakses indeks baris dalam fungsi yang diterapkan di seluruh DataFrame
Pandas. Saya punya sesuatu seperti ini:
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
dan saya akan mendefinisikan fungsi yang mengakses elemen dengan baris tertentu
def rowFunc(row):
return row['a'] + row['b'] * row['c']
Saya bisa menerapkannya seperti ini:
df['d'] = df.apply(rowFunc, axis=1)
>>> df
a b c d
0 1 2 3 7
1 4 5 6 34
Hebat! Sekarang bagaimana jika saya ingin memasukkan indeks ke dalam fungsi saya? Indeks dari setiap baris yang diberikan DataFrame
sebelum menambahkan d
adalah Index([u'a', u'b', u'c', u'd'], dtype='object')
, tetapi saya ingin 0 dan 1. Jadi saya tidak bisa begitu saja mengaksesrow.index
.
Saya tahu saya bisa membuat kolom sementara di tabel tempat saya menyimpan indeks, tapi saya bertanya-tanya apakah itu disimpan di objek baris di suatu tempat.
apply
? Ini jauh lebih lambat daripada melakukan operasi vektor pada frame itu sendiri. (Kadang-kadang menerapkan adalah cara termudah untuk melakukan sesuatu, dan pertimbangan kinerja sering dilebih-lebihkan, tetapi untuk contoh khusus Anda, semudah itu untuk tidak menggunakannya.)