Python 为什么Geopandas数据帧返回索引错误
我在VS代码笔记本中使用Geopandas0.6.1和Pandas1.0.0。今天工作时,我很惊讶在看似有效的geopandas数据帧上调用geopandas函数head(),导致了以下错误 gpd.columns和gpd.shape等方法正常工作并返回预期结果。iloc返回预期的记录。例如:Python 为什么Geopandas数据帧返回索引错误,python,pandas,geopandas,Python,Pandas,Geopandas,我在VS代码笔记本中使用Geopandas0.6.1和Pandas1.0.0。今天工作时,我很惊讶在看似有效的geopandas数据帧上调用geopandas函数head(),导致了以下错误 gpd.columns和gpd.shape等方法正常工作并返回预期结果。iloc返回预期的记录。例如: for item in new_west_df.columns.values.tolist(): print(item) TYPE NWID LICENCE TRADE_NAME LICENCE
for item in new_west_df.columns.values.tolist():
print(item)
TYPE
NWID
LICENCE
TRADE_NAME
LICENCEE_NAME
CIVIC_ADDRESS
LICENCE_DESCRIPTION
YEAR_OPENED
APPROVED_DATE
SIC
SIC_GROUP
CIVIC_POSTAL_CODE
geometry
但是,columns()和.geometry会导致以下错误。在我对问题的研究中,没有一个场景与这些情况类似,阅读错误我无法理解根本原因
IndexError Traceback (most recent call last)
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/IPython/core/formatters.py in __call__(self, obj)
700 type_pprinters=self.type_printers,
701 deferred_pprinters=self.deferred_printers)
--> 702 printer.pretty(obj)
703 printer.flush()
704 return stream.getvalue()
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/IPython/lib/pretty.py in pretty(self, obj)
397 if cls is not object \
398 and callable(cls.__dict__.get('__repr__')):
--> 399 return _repr_pprint(obj, self, cycle)
400
401 return _default_pprint(obj, self, cycle)
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle)
687 """A pprint that just redirects to the normal repr function."""
688 # Find newlines and replace them with p.break_()
--> 689 output = repr(obj)
690 for idx,output_line in enumerate(output.splitlines()):
691 if idx:
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/core/series.py in __repr__(self)
1370 min_rows=min_rows,
1371 max_rows=max_rows,
-> 1372 length=show_dimensions,
1373 )
1374 result = buf.getvalue()
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/core/series.py in to_string(self, buf, na_rep, float_format, header, index, length, dtype, name, max_rows, min_rows)
1436 max_rows=max_rows,
1437 )
-> 1438 result = formatter.to_string()
1439
1440 # catch contract violations
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py in to_string(self)
359
360 fmt_index, have_header = self._get_formatted_index()
--> 361 fmt_values = self._get_formatted_values()
362
363 if self.truncate_v:
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py in _get_formatted_values(self)
346 None,
347 float_format=self.float_format,
--> 348 na_rep=self.na_rep,
349 )
350
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py in format_array(values, formatter, float_format, na_rep, digits, space, justify, decimal, leading_space)
1172 )
1173
-> 1174 return fmt_obj.get_result()
1175
1176
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py in get_result(self)
1203
1204 def get_result(self) -> List[str]:
-> 1205 fmt_values = self._format_strings()
1206 return _make_fixed_width(fmt_values, self.justify)
1207
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py in _format_strings(self)
1483 values = values._values
1484
-> 1485 formatter = values._formatter(boxed=True)
1486
1487 if is_categorical_dtype(values.dtype):
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/geopandas/array.py in _formatter(self, boxed)
1009 # dummy heuristic based on 10 first geometries that should
1010 # work in most cases
-> 1011 xmin, ymin, xmax, ymax = self[~self.isna()][:10].total_bounds
1012 if (
1013 (-180 <= xmin <= 180)
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/geopandas/array.py in total_bounds(self)
750 return np.array(
751 (
--> 752 b[:, 0].min(), # minx
753 b[:, 1].min(), # miny
754 b[:, 2].max(), # maxx
IndexError: too many indices for array
索引器错误回溯(最近一次调用)
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/IPython/core/formatters.py in_u_调用(self,obj)
700 type\u PPRINTS=self.type\u打印机,
701延迟的打印机=自延迟的打印机)
-->702打印机。漂亮(obj)
703打印机。刷新()
704返回流。getvalue()
/pretty中的Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/IPython/lib/pretty.py(self,obj)
397如果cls不是对象\
398和可调用(cls.dict.get(“报告”):
-->399返回报告(obj、自我、循环)
400
401返回默认值(对象、自身、循环)
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/IPython/lib/pretty.py in_repr_pprint(obj,p,cycle)
687“一个仅重定向到普通repr函数的pprint。”“”
688#找到换行符并替换为p.break()
-->689输出=报告(obj)
690对于idx,枚举中的输出_行(output.splitlines()):
691如果idx:
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/core/series.py in_____repr_____(self)
1370最小行=最小行,
1371最大行数=最大行数,
->1372长度=显示尺寸,
1373 )
1374结果=buf.getvalue()
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/core/series.py in to_字符串(self、buf、na_rep、float_格式、标题、索引、长度、数据类型、名称、最大行数、最小行数)
1436最大行数=最大行数,
1437 )
->1438 result=formatter.to_string()
1439
1440#发现违反合同的行为
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py in to_string(self)
359
360 fmt\u索引,have\u header=self.\u获取\u格式化的\u索引()
-->361 fmt\u values=self.\u获取格式化的\u值()
362
363如果自截断_v:
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py in\u get\u formatted\u values(self)
346无,
347 float_格式=self.float_格式,
-->348 na_rep=self.na_rep,
349 )
350
/格式数组中的Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py(值、格式化程序、浮点格式、na_rep、数字、空格、对齐、十进制、前导空格)
1172 )
1173
->1174返回fmt_对象获取结果()
1175
1176
/get_result(self)中的Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py
1203
1204 def get_结果(自身)->列表[str]:
->1205 fmt_值=自身。_格式_字符串()
1206返回固定宽度(fmt值,自调整)
1207
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/pandas/io/formats/format.py格式字符串(self)
1483值=值。\u值
1484
->1485格式化程序=值。\格式化程序(装箱=真)
1486
1487如果是分类类型(values.dtype):
/Library/Frameworks/anaconda3/envs/vm/lib/python3.7/site-packages/geopandas/array.py in_格式化程序(self,装箱)
1009#基于10个应
1010#在大多数情况下有效
->1011 xmin,ymin,xmax,ymax=self[~self.isna()][:10]。总边界
1012如果(
1013(-180这是GeoPandas 0.6.2()中修复的错误,因此,如果您升级geopandas,它应该会得到解决。向前一步;向后一步。我试图通过conda安装-c conda forge geopandas下载0.6.3,但收到了一个重要的问题。您需要提供更多的细节,以便能够提供任何建议(但由于这是一个新问题,可能最好提出一个新问题)注意conda和conda forge之间的差异,但这是根本原因,升级到0.6.3修复了该问题。