【发布时间】:2014-07-11 12:54:46
【问题描述】:
我是 Panda 和 DataFrames 的新手,遇到了问题。 DataFrame.apply() 方法将行参数传递给提供的函数。但是我似乎无法从该行参数中找出与该行对应的索引值是什么。
一个例子
df = DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})
df = df.set_index('a')
def my_test2(row):
return "{}.{}".format(row['a'], row['b'])
df['Value'] = df.apply(my_test2, axis=1)
产生一个 KeyError
KeyError: ('a', u'occurred at index -1.16119852166')
问题是 my_test2 方法中的 row['a'] 失败。如果我不执行 df.set_index('a') 它可以正常工作,但我确实希望在 a 上有一个索引。
我尝试复制列 a(一次作为索引,一次作为列)并且这有效,但这看起来很丑陋且有问题。
关于如何在给定行对象的情况下获取相应索引值的任何想法?
非常感谢。
【问题讨论】:
-
那个特定的错误正在发生,因为你输入了
df.index(b)而不是df = df.set_index("b"),这就是为什么你得到一个NameError而不是KeyError. (修复它不会解决你的问题,但它会让这个问题更有意义..) -
感谢您的评论,但这是错误的 - 我在喝第一杯茶之前的错误帖子。有固定的帖子。