我创建了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”的结果不一样?
答案 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)
pop
是pandas.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