【发布时间】:2014-12-26 19:17:12
【问题描述】:
我正在尝试访问在 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。
我知道我可以在存储索引的表中创建一个临时列,但我想知道它是否存储在某处的行对象中。
【问题讨论】:
-
旁白:您是否有理由需要使用
apply?它比在帧本身上执行矢量化操作要慢得多。 (有时 apply 是做某事的最简单方法,性能考虑经常被夸大,但对于您的特定示例,使用它就像 not 一样容易。) -
@DSM 实际上,我使用不同的行元素为每一行调用另一个对象构造函数。我只是想把一个最小的例子放在一起来说明这个问题。