【发布时间】:2020-10-24 21:17:56
【问题描述】:
我一直在使用 pandas 处理数据帧,在清理这些数据时,我遇到了迭代问题...
例如(我试图定位错误):
N_index = df.shape[0]
j = 0
while j < N_index:
print(j, df.diag_1[j][0],'squalala')
j += 1
这个显示这个:
0 2 squalala
1 2 squalala
2 6 squalala
3 8 squalala
4 1 squalala
5 4 squalala
6 4 squalala
7 4 squalala
8 3 squalala
9 4 squalala
10 2 squalala
11 1 squalala
12 4 squalala
13 4 squalala
14 5 squalala
15 9 squalala
16 4 squalala
17 6 squalala
18 4 squalala
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2890 try:
-> 2891 return self._engine.get_loc(casted_key)
2892 except KeyError as err:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 19
并且由于某些原因(idk which)在第 18 个索引之后,它无法工作,所以如果您对如何修复它有任何想法或者它为什么会这样做,我将非常感谢您。
PS。我在示例中使用了 while 循环而不是 for 循环,但我都尝试了,因为我在另一个 Stack Overflow 帖子上看到这解决了他们的问题,对我来说它没有 ^^
PSS。我正在使用笔记本
编辑:这里我正在做一个df.diag_1[j][0],因为我想访问我的数据框的 diag_1 列中第 j 行的字符串的第一个元素 -
【问题讨论】:
-
您混淆了行和列。 df.shape[0] 返回数据框中的行数。但是,当您执行此 df[j][0] 时,j 将引用数据框中的列。
-
在我看来,他正在尝试索引名为
diag_1的列的行,或者? -
@BraulioBarahona 就是这个想法,我想访问我的数据框 diag_1 列中 j 行的字符串的第一个元素
-
@Pukki 查看我输入的代码 sn-p,索引应该可以工作
标签: python pandas dataframe keyerror