繁体   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