递归Python函数不返回数据

时间:2017-02-02 06:04:14

标签: python pandas recursion

我有一个递归函数

def boost_test(frame, iteration, max_iteration):
    if iteration < max_iteration:
        print iteration, max_iteration
        # get predictions
        iteration += 1
        boost_test(frame, iteration, max_iteration)
    elif iteration == max_iteration:
        print 'return frame', iteration, max_iteration, frame.columns
        #print frame
        return frame

我可以这样运行:

testF = pd.DataFrame([1,2])
testF.columns = ['hello']
n = boost_test(testF, 0, 5)

这是输出:     0 5     1 5     2 5     3 5     4 5     return frame 5 5 Index([u'hello'],dtype ='object')

所以,看起来一切都是正确的。但如果它看起来不像函数实际上返回一个帧。

当我尝试     n.head()

我明白了:

AttributeError: 'NoneType' object has no attribute 'head'

我为什么不返回数据帧而感到茫然。任何帮助深表感谢。谢谢!

1 个答案:

答案 0 :(得分:1)

boost_test(frame, iteration, max_iteration)

在这里,您进行递归调用,但不对结果执行任何操作。您需要明确return它的值才能重新启动调用堆栈。