TypeError: '(slice(0, 15, None), 15)' is an invalid key
TypeError: '(slice(0, 15, None), 15)' is an invalid key
我在 Python 中有一段代码,看起来类似于下面粘贴的代码。对于上下文,所有 csv 文件都打印 [15 行 x 16 列],出于隐私目的我只是更改了名称。
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])
所以,至少到现在为止,C 是一个 DataFrame 而 Cf 是一个Numpy 数组。
那么Cf = C
可能是一个逻辑错误,因为它覆盖了
Numpy 数组(全为零)以及对 C.
的另一个引用
现在关于违规指令 (Cf[0:15,16] = C[0:15,15]
):
注意C[0:15,15]
是错误的(运行这段代码你自己看吧)。
在 pandasonic DataFrames 的情况下,您可以使用“位置寻址”,
包括切片,使用 iloc.
另一方面,允许 Numpy 数组使用此表示法。
因此,假设不需要 Cf = C
并且 Cf 应该保留
Numpy 数组,您可能应该将此指令更正为:
Cf[0:15,16] = C.iloc[0:15,15]
并对代码中的其余指令进行类似的更正。
编辑
另一种选择是在C DataFrame中引用底层的Numpy数组,
使用 values 属性。
在这种情况下,您可以使用 Numpythonic 寻址方式,例如:
C.values[0:15,15]
没有错误。
我在 Python 中有一段代码,看起来类似于下面粘贴的代码。对于上下文,所有 csv 文件都打印 [15 行 x 16 列],出于隐私目的我只是更改了名称。
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])
所以,至少到现在为止,C 是一个 DataFrame 而 Cf 是一个Numpy 数组。
那么Cf = C
可能是一个逻辑错误,因为它覆盖了
Numpy 数组(全为零)以及对 C.
现在关于违规指令 (Cf[0:15,16] = C[0:15,15]
):
注意C[0:15,15]
是错误的(运行这段代码你自己看吧)。
在 pandasonic DataFrames 的情况下,您可以使用“位置寻址”,
包括切片,使用 iloc.
另一方面,允许 Numpy 数组使用此表示法。
因此,假设不需要 Cf = C
并且 Cf 应该保留
Numpy 数组,您可能应该将此指令更正为:
Cf[0:15,16] = C.iloc[0:15,15]
并对代码中的其余指令进行类似的更正。
编辑
另一种选择是在C DataFrame中引用底层的Numpy数组, 使用 values 属性。 在这种情况下,您可以使用 Numpythonic 寻址方式,例如:
C.values[0:15,15]
没有错误。