尝试访问dataframe列显示“<bound method =”“ndframe.xxx ...”=“”

时间:2017-09-15 12:45:45

标签: python pandas dataframe

=“”

我创建了DataFrame对象Jupyter笔记本:

data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
       'year':[2000, 2001, 2002, 2000, 2001],
       'pop':[1.5, 2.0, 3.6, 2.4, 2.9]}
frame = DataFrame(data)

当我提取列'年'时,没关系:

In [30]: frame.year
Out[30]: 0    2000
         1    2001
         2    2002
         3    2000
         4    2001
         Name: year, dtype: int64

但是当我提取列'pop'(frame.pop)时,结果是:

Out[31]:
<bound method NDFrame.pop of    pop   state  year
0  1.5    Ohio  2000
1  2.0    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2000
4  2.9  Nevada  2001>

为什么结果与“frame.year”的结果不一样?

3 个答案:

答案 0 :(得分:3)

pop是一个数据帧级功能。这里的内容是尽量避免使用.访问者来访问列。有许多数据框属性和函数可能与您的列名称冲突,在这种情况下,.将调用这些属性和函数而不是您的列。

您想要使用[..] dict访问器:

frame['pop']
0    1.5
1    2.0
2    3.6
3    2.4
4    2.9
Name: pop, dtype: float64

如果您想使用pop可以。这是如何:

frame.pop('pop') 
0    1.5
1    2.0
2    3.6
3    2.4
4    2.9
Name: pop, dtype: float64

frame
    state  year
0    Ohio  2000
1    Ohio  2001
2    Ohio  2002
3  Nevada  2000
4  Nevada  2001

请注意,这会修改原始数据框,因此除非您尝试删除列,否则请不要这样做。

答案 1 :(得分:0)

poppandas.DataFrame的一种方法。您需要使用frame['pop']

答案 2 :(得分:0)

我使用的方式.. .eval

frame.eval('pop')
Out[108]: 
0    1.5
1    2.0
2    3.6
3    2.4
4    2.9
dtype: float64