我正試圖訪問應用於Pandas中整個DataFrame
的函數中的一行索引。我有這樣的事情:獲取熊貓應用函數中一行的索引
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
真棒!現在如果我想將索引合併到我的函數中呢? 在添加d
之前,此DataFrame
中的任何給定行的索引將爲Index([u'a', u'b', u'c', u'd'], dtype='object')
,但我想要0和1.因此,我不能只訪問row.index
。
我知道我可以創建在我存儲索引的表的臨時列,但我「米不知道如果在該行對象sotred地方。
旁白:有沒有你需要使用'apply'理由嗎?它比在框架上執行矢量化操作要慢得多。 (有時候*是最簡單的方法來做某事,性能方面的考慮往往被誇大了,但是對於你特定的例子來說,它很容易*而不是使用它。) – DSM 2014-10-30 16:26:25
@DSM實際上我爲每一行調用另一個對象構造函數使用不同的行元素。我只是想舉一個最小的例子來說明這個問題。 – Mike 2014-10-30 17:27:53
'apply()'不是你正在尋找的機器人;改用'df.iterrows()'。看到我的答案。這是一個XY問題 – smci 2018-02-16 04:04:36