我在VS Code笔记本中使用大熊猫0.6.1和大熊猫1.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
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
[这是在GeoPandas 0.6.2(https://github.com/geopandas/geopandas/releases/tag/v0.6.2)中修复的错误,因此,如果升级Geopandas,则应解决。