在这篇文章中,我们将带领您了解AttributeError:使用Pandaseval,“PandasExprVisitor”对象没有属性“visit_Ellipsis”的全貌,包括python报错对象
在这篇文章中,我们将带领您了解AttributeError:使用Pandas eval,“ PandasExprVisitor”对象没有属性“ visit_Ellipsis”的全貌,包括python报错对象没有属性的相关情况。同时,我们还将为您介绍有关AttributeError:“ DataFrame”对象没有属性“ map”、AttributeError:“ DiGraph”对象没有属性“ number_of_selfloops”、AttributeError:“ DirectoryIterator”对象没有属性“ map”、AttributeError:“ ElasticSearch”对象没有属性“ bulk_index””的知识,以帮助您更好地理解这个主题。
本文目录一览:- AttributeError:使用Pandas eval,“ PandasExprVisitor”对象没有属性“ visit_Ellipsis”(python报错对象没有属性)
- AttributeError:“ DataFrame”对象没有属性“ map”
- AttributeError:“ DiGraph”对象没有属性“ number_of_selfloops”
- AttributeError:“ DirectoryIterator”对象没有属性“ map”
- AttributeError:“ ElasticSearch”对象没有属性“ bulk_index””
AttributeError:使用Pandas eval,“ PandasExprVisitor”对象没有属性“ visit_Ellipsis”(python报错对象没有属性)
我有一系列的表格:
s0 [133, 115, 3, 1]1 [114, 115, 2, 3]2 [51, 59, 1, 1]dtype: object
注意,它的元素是 字符串 :
s[0]''[133, 115, 3, 1]''
我试图用来pd.eval
将此字符串解析为列表的一列。这适用于此样本数据。
pd.eval(s)array([[133, 115, 3, 1], [114, 115, 2, 3], [51, 59, 1, 1]], dtype=object)
但是,在更大的数据(10K的数量级)上,这很惨!
len(s)300000pd.eval(s)AttributeError: ''PandasExprVisitor'' object has no attribute ''visit_Ellipsis''
我在这里想念什么?函数或数据有问题吗?
答案1
小编典典TL; DR
截至v0.21
,这是一个错误,并且是GitHub上的一个未解决问题。参见GH16289。
为什么会出现此错误?
(很可能)这是pd.eval
的错,它不能解析具有100多行的序列。这是一个例子。
len(s)300000pd.eval(s.head(100)) # returns a parsed result
鉴于,
pd.eval(s.head(101))AttributeError: ''PandasExprVisitor'' object has no attribute ''visit_Ellipsis''
无论解析器还是引擎,此问题仍然存在。
这个错误是什么意思?
当传递的行超过100行时,对其进行pd.eval
操作__repr__
,而不是对其中包含的对象进行操作(这是导致此错误的原因)。所述__repr__
截短的行,具有替换它们...
(省略号)。该省略号被引擎误解为Ellipsis
对象-
...Ellipsispd.eval(''...'')AttributeError: ''PandasExprVisitor'' object has no attribute ''visit_Ellipsis''
这正是导致此错误的原因。
我该怎么做才能使它正常工作?
目前,尚无解决方案(该问题截至2017年12月28日仍未解决), 但是 ,有一些解决方法。
选项1 如果可以保证没有任何格式错误的字符串,则此选项应立即可用。ast.literal_eval
from ast import literal_evals.apply(literal_eval)0 [133, 115, 3, 1]1 [114, 115, 2, 3]2 [51, 59, 1, 1]dtype: object
如果可能出现数据格式错误,则需要编写一些错误处理代码。您可以使用函数来做到这一点-
def safe_parse(x): try: return literal_eval(x) except (SyntaxError, ValueError): return np.nan # replace with any suitable placeholder value
将此功能传递给apply
-
s.apply(safe_parse)0 [133, 115, 3, 1]1 [114, 115, 2, 3]2 [51, 59, 1, 1]dtype: object
ast
适用于任意数量的行,速度很慢,但可靠。您也可以将pd.json.loads
JSON数据用于,方法与相同literal_eval
。
选项2yaml.load
解析简单数据的另一个不错的选择,我前一阵子是从@ayhan那里选出来的。
import yamls.apply(yaml.load)0 [133, 115, 3, 1]1 [114, 115, 2, 3]2 [51, 59, 1, 1]dtype: object
我尚未在更复杂的结构上对此进行过测试,但这对于几乎所有基本的数据字符串表示形式均适用。
您可以在此处找到PyYAML的文档。向下滚动一点,您将找到有关该load
功能的更多详细信息。
注意
- 如果您使用的是JSON数据,则可能适合使用
pd.read_json
或pd.io.json.json_normalize
从头开始读取文件。 - 您还可以在读取数据时执行解析,方法是
read_csv
-s = pd.read_csv(converters=literal_eval, squeeze=True)
该converters
参数将在读取的列上应用传递给该列的函数,因此您以后不必处理解析。
- 继续上述要点,如果您正在使用数据框,请传递
dict
-df = pd.read_csv(converters={''col'' : literal_eval})
col
您还可以传递pd.json.loads
(对于json数据)或pd.eval
(如果您有100行或更少的行),则将其解析在哪里。
感谢MaxU和Moondra发现此问题。
AttributeError:“ DataFrame”对象没有属性“ map”
我想转换火花数据框架以使用以下代码添加:
from pyspark.mllib.clustering import KMeans
spark_df = sqlContext.createDataFrame(pandas_df)
rdd = spark_df.map(lambda data: Vectors.dense([float(c) for c in data]))
model = KMeans.train(rdd,2,maxIterations=10,runs=30,initializationMode="random")
详细的错误消息是:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-11-a19a1763d3ac> in <module>()
1 from pyspark.mllib.clustering import KMeans
2 spark_df = sqlContext.createDataFrame(pandas_df)
----> 3 rdd = spark_df.map(lambda data: Vectors.dense([float(c) for c in data]))
4 model = KMeans.train(rdd,initializationMode="random")
/home/edamame/spark/spark-2.0.0-bin-hadoop2.6/python/pyspark/sql/dataframe.pyc in __getattr__(self,name)
842 if name not in self.columns:
843 raise AttributeError(
--> 844 "'%s' object has no attribute '%s'" % (self.__class__.__name__,name))
845 jc = self._jdf.apply(name)
846 return Column(jc)
AttributeError: 'DataFrame' object has no attribute 'map'
有人知道我在这里做错了吗?谢谢!
AttributeError:“ DiGraph”对象没有属性“ number_of_selfloops”
软件包nxpd
好像是最近几年更新的。您可以自己修改行(请参见https://github.com/chebee7i/nxpd/blob/master/nxpd/nx_pydot.py#L249),并与G.number_of_selfloops
交换nx.number_of_selfloops(G)
。
但是,我认为它们与nxpd
有关的问题更多,我建议您仅将networkx
自己的接口用于graphviz
,例如graphviz_layout
:
pos = nx.nx_agraph.graphviz_layout(G,prog="circo")
nx.draw(G,pos)
AttributeError:“ DirectoryIterator”对象没有属性“ map”
您可以使用以下方式导入数据集
tf.data.Dataset.from_generator()
AttributeError:“ ElasticSearch”对象没有属性“ bulk_index””
当我尝试时python manage.py rebuild_index
,会发生错误:
self.conn.bulk_index(self.index_name,'modelresult',prepped_docs,id_field=ID)
AttributeError: 'ElasticSearch' object has no attribute 'bulk_index'
我找到了带有pyelasticsearch.py
的链接https://github.com/toastdriven/pyelasticsearch/blob/master/pyelasticsearch.py#L424-469,但我不知道它是哪个版本。无论如何bulk_index
,该代码中没有购买我的pyelasticsearch.py。任何人都有相同的经历吗?感谢您的时间。
加:django-haystack 2.0.0.beta,pyelasticsearch 0.0.6
关于AttributeError:使用Pandas eval,“ PandasExprVisitor”对象没有属性“ visit_Ellipsis”和python报错对象没有属性的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AttributeError:“ DataFrame”对象没有属性“ map”、AttributeError:“ DiGraph”对象没有属性“ number_of_selfloops”、AttributeError:“ DirectoryIterator”对象没有属性“ map”、AttributeError:“ ElasticSearch”对象没有属性“ bulk_index””等相关知识的信息别忘了在本站进行查找喔。
本文标签: