我是Panda和DataFrame的新手,遇到了一个问题。DataFrame.apply()方法向提供的函数传递行参数。但是,我似乎无法从这个行参数中找到与该行对应的索引值。
例如:
问题在于my_test2方法中的row ['a']失败。如果我不执行df.set_index('a'),它就能正常工作,但是我确实希望在a上有一个索引。 我尝试重复列a(一次作为索引,一次作为列),这样可以工作,但这似乎很丑陋和有问题。 你有什么想法如何给定行对象来获取相应的索引值? 非常感谢。
例如:
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
。 (修复这个问题并不能解决你的问题,但它会让这个问题更有意义..) - DSM