[英]astype(str) in pandas raise TypeError
我有一個簡單的 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
返回
PartNo object
Cost float64
dtype: object
為什么在這種情況下會為stdcos['PartNo'].astype(str)
引發 TypeError ? 是否有可能與奇怪的 PartNo dtype 有關?
對不起,這是錯誤信息
---------------------------------------------------------------------------
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
感謝@Juanpa.arrivillaga,我發現了這個錯誤。
它來自stdcos.columns = [['PartNo', 'Cost']]
所以列名實際上是嵌套的,但由於某種原因,它在 jupyter notebook 中顯示得像一個扁平的。
將其改回stdcos.columns = ['PartNo', 'Cost']
解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.