簡體   English   中英

類型錯誤:只有 integer 標量 arrays 可以在使用 pandas3EB8454BA01217A 的doing.loc 時轉換為標量索引

[英]Type error: only integer scalar arrays can be converted to a scalar index when doing .loc with pandas DataFrame

我有一個簡單的df:

a = pd.DataFrame([[1,2,3,5,8],['jack','jeff',np.nan,np.nan,'tesla']])
    a.index = [['number','name']]
    a=a.T

它看起來像這樣:

  number   name
0      1   jack
1      2   jeff
2      3    NaN
3      5    NaN
4      8  tesla

當我想像a.loc[a['number']==5]那樣做 a.loc 時,我收到了這種類型的錯誤:

Traceback (most recent call last):
  File "c:\Users\Administrator\Documents\proj\test.py", line 13, in <module>
    a.loc[a['number']==5]
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2878, in __getitem__
    return self._get_item_cache(key)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 3541, in _get_item_cache
    values = self._mgr.iget(loc)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\managers.py", line 988, in iget
    block = self.blocks[self.blknos[i]]
TypeError: only integer scalar arrays can be converted to a scalar index

我搜索了此錯誤並嘗試了一些解決方案,例如使用a.loc[np.array(a)['number']==5]或重新安裝 pandas 和 numpy 或 Z7E3332C5FD0270D97C964E52BA184AD88 工作。

我的 pandas 版本是 1.3 而 numpy 版本是 1.19.2

原因是您的專欄是MultiIndex

a.columns
#MultiIndex([('number',),
#            (  'name',)],
#           )

執行a['number']時會發生錯誤。 用列表而不是列表替換索引重命名應該修復,即而不是:

a.index = [['number','name']]

做:

a.index = ['number','name']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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