我注意到许多DataFrame函数如果没有括号使用似乎表现得像'属性' e.g。
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上使用pandas 0.15.1
答案 0 :(得分:3)
它们是不同的,不推荐,一个清楚地表明它是一种方法,恰好输出结果,而另一个显示预期的输出。
这就是你不应该这样做的原因:
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的切片这不是你想要的。