Pandas错误:'DataFrame'对象没有属性'loc'。

10

我对于 pandas 还比较陌生,正在尝试使用版本为 0.10.1 的 Pandas 10 分钟教程。但是当我尝试以下操作时,会出现如下错误。 print df 可以正常工作。

为什么 .loc 没有起作用?

代码

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randn(6,4), index=pd.date_range('20130101', periods=6), columns=['A','B','C','D'])
df.loc[:,['A', 'B']]

错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-4-8513cb2c6dc7> in <module>()
----> 1 df.loc[:,['A', 'B']]

C:\Python27\lib\site-packages\pandas\core\frame.pyc in __getattr__(self, name)
   2044             return self[name]
   2045         raise AttributeError("'%s' object has no attribute '%s'" %
-> 2046                              (type(self).__name__, name))
   2047 
   2048     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'loc'
3个回答

18

在处理pyspark DataFrame时,我遇到了这个问题。因此,如果您也正在使用pyspark DataFrame,您可以使用toPandas()方法将其转换为pandas DataFrame。


1
谢谢!我花了几个小时进行了无用的搜索,试图理解如何使用PySpark数据框架进行操作。 - Freddy
对于hana_ml,您需要使用.collect()hana_ml.DataFrame转换为pandas.DataFrame使用`dataframe.ConnectionContext(**auth_params)`连接到数据库: df = conn.sql(query).collect() - undefined

11

实际上,此刻它是首页上宣传的第一个新功能:“新的精确索引字段 loc、iloc、at 和 iat,以减少以前 ix 方法中的偶发歧义。” - DSM
我有pandas .11版本,但它在我的电脑上无法运行...你确定这个问题不是在.12版本中引入的吗? - Ryan Saxe
pandas的新功能页面中,@RyanSaxe提到“从0.11版本开始……” 我在0.11版本(和0.12dev版本)中测试了问题提出者提供的代码,没有出现任何问题。 - Andy Hayden
我的意思是我从macports安装的,而macports有.11版本...这很奇怪,我会调查一下。 - Ryan Saxe
@RyanSaxe 我想知道MacPorts是否有0.11的早期版本候选版? - Andy Hayden

1

我觉得很奇怪,因为我有pandas 0.11版本,但我的loc不起作用。以下是适合你需求的解决方案,只需使用ix即可。

df.ix[:,['A','B']]

那么,也许MacPorts安装的版本与其所述的版本不同。 - Ryan Saxe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接