我注意到,如果使用许多不带括号的DataFrame函数,其行为似乎类似于“属性”,例如
In [200]: df = DataFrame (np.random.randn (7,2)) In [201]: df.head () Out[201]: 0 1 0 -1.325883 0.878198 1 0.588264 -2.033421 2 -0.554993 -0.217938 3 -0.777936 2.217457 4 0.875371 1.918693 In [202]: df.head Out[202]: <bound method DataFrame.head of 0 1 0 -1.325883 0.878198 1 0.588264 -2.033421 2 -0.554993 -0.217938 3 -0.777936 2.217457 4 0.875371 1.918693 5 0.940440 -2.279781 6 1.152370 -2.733546>
这是如何完成的,是一种好的做法?这是Linux上的熊猫0.15.1
它们是不同的,因此不建议使用,它们清楚地表明这是一种方法并且恰好输出结果,而另一种则表明了预期的输出。
这就是为什么您不应该这样做的原因:
In [23]: t = df.head In [24]: t.iloc[0] --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-24-b523e5ce509d> in <module>() ----> 1 t.iloc[0] AttributeError: 'function' object has no attribute 'iloc' In [25]: t = df.head() t.iloc[0] Out[25]: 0 0.712635 1 0.363903 Name: 0, dtype: float64
所以好吧,您没有使用括号正确地调用该方法并看到显示为有效的输出,但是如果您引用了该引用并尝试使用它,那么您将对方法进行操作,而不是对df的切片进行操作你打算做什么