[英]astype(str) in pandas raise TypeError
I have a simple dataframe produced an error stdcos.head()
produce我有一个简单的 dataframe 产生错误
stdcos.head()
产生
PartNo Cost
0 180 8.95
1 213 0.32
2 215 2.77
3 216 3.02
4 218 1.37
stdcos.dtypes
returns stdcos.dtypes
返回
PartNo object
Cost float64
dtype: object
Why in this case can raise a TypeError for stdcos['PartNo'].astype(str)
?为什么在这种情况下会为
stdcos['PartNo'].astype(str)
引发 TypeError ? Is it possible to have something to do with the weird PartNo dtype?是否有可能与奇怪的 PartNo dtype 有关?
Sorry, this is the error message对不起,这是错误信息
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-48-791196d10a7a> in <module>
----> 1 stdcos['PartNo'].astype(str)
~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
2774 if self.columns.nlevels > 1:
2775 return self._getitem_multilevel(key)
-> 2776 return self._get_item_cache(key)
2777
2778 # Do we have a slicer (on rows)?
~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item)
3584 res = cache.get(item)
3585 if res is None:
-> 3586 values = self._data.get(item)
3587 res = self._box_item_values(item, values)
3588 cache[item] = res
~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\internals\managers.py in get(self, item)
966 raise ValueError("cannot label index with a null key")
967
--> 968 return self.iget(loc)
969 else:
970
~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\internals\managers.py in iget(self, i)
983 Otherwise return as a ndarray
984 """
--> 985 block = self.blocks[self._blknos[i]]
986 values = block.iget(self._blklocs[i])
987
TypeError: only integer scalar arrays can be converted to a scalar index
Thanks to @Juanpa.arrivillaga, I found the bug.感谢@Juanpa.arrivillaga,我发现了这个错误。
It comes from stdcos.columns = [['PartNo', 'Cost']]
它来自
stdcos.columns = [['PartNo', 'Cost']]
So the column name is actually nested, but for some reason it display like a flat ones in jupyter notebook.所以列名实际上是嵌套的,但由于某种原因,它在 jupyter notebook 中显示得像一个扁平的。
Changing it back to stdcos.columns = ['PartNo', 'Cost']
fixed the issue.将其改回
stdcos.columns = ['PartNo', 'Cost']
解决了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.