我正试图访问应用于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