![](/img/trans.png)
[英]only integer scalar arrays can be converted to a scalar index error in Hyperopt
[英]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.