类型错误: '(slice(0, 15, None), 15)'是无效的键



我有一个Python代码,看起来像下面粘贴的代码。对于上下文,所有csv文件都打印[15行x16列],我只是出于隐私目的更改了名称。

import numpy as np
import pandas as pd 
C = pd.read_csv('/Users/name/Desktop/filename1.csv')
Chome = pd.read_csv('/Users/name/Desktop/filename2.csv')
Cwork = pd.read_csv('/Users/name/Desktop/filename3.csv')
Cschool = pd.read_csv('/Users/name/Desktop/filename4.csv')
Cother = pd.read_csv('/Users/name/Desktop/filename5.csv')
Cf = np.zeros([17,17])
Cf = C
Cf[0:15,16] = C[0:15,15]
Cf[16,0:15] = C[15,0:15] 
Cf[16,16] = C[15,15]
print(Cf)

当我运行代码时,我得到以下错误:

runfile('/Users/name/.spyder-py3/untitled12.py', wdir='/Users/name/.spyder-py3')
Traceback (most recent call last):
File "/Users/name/.spyder-py3/untitled12.py", line 23, in <module>
Cf[0:15,16] = C[0:15,15]
File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py", line 2800, in __getitem__
indexer = self.columns.get_loc(key)
File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py", line 2646, in get_loc
return self._engine.get_loc(key)
File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 116, in pandas._libs.index.IndexEngine.get_loc
TypeError: '(slice(0, 15, None), 15)' is an invalid key

我不太清楚这个错误是什么意思。我对python还很陌生,所以调试是我试图更好地理解的一项技能。因此,任何关于我能做些什么来修复这个错误的建议,或者它意味着什么,都会很有帮助。非常感谢。

请注意代码示例中的以下序列:

C = pd.read_csv(...)
... # Other cases of pd.read_csv
Cf = np.zeros([17,17])

因此,至少到目前为止,CDataFrameCfNumpy数组。

那么Cf = C可能是一个逻辑错误,因为它覆盖了Numpy数组(满零(,另一个引用C

现在,就违规指令(Cf[0:15,16] = C[0:15,15](而言:

请注意,C[0:15,15]是错误的(请自行运行此代码以查看它(。在泛数据帧的情况下,您可以使用";位置寻址";,包括切片,使用iloc

另一方面,对于Numpy数组,这种表示法是允许的

因此,假设不需要Cf = C,并且Cf应保持为Numpy数组,您可能应该将此指令更正为:

Cf[0:15,16] = C.iloc[0:15,15]

并在代码中的其余指令中进行类似的更正。

编辑

另一个选项是引用CDataFrame中的底层Numpy数组,使用属性。在这种情况下,您可以使用Numpythonic寻址样式,例如:

C.values[0:15,15]

不会导致错误。

相关内容

  • 没有找到相关文章

最新更新