簡體   English   中英

pandas 中的 astype(str) 引發 TypeError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM