【发布时间】:2019-12-15 01:43:02
【问题描述】:
我必须遍历我的数据框维度的 len,我收到一条错误消息:ValueError: **153353** is not in range。
如您所见,我的止损范围为 153352-1。即使我将其设置为 153351,我也得到了耻辱错误。尽管出现错误,但我的 namefiledict 已被填满。错误出现在最后一行(已填充)
#
namefile = []
for docs in list(df[0][0][0]):
for allwav in docs:
for onewavfile in allwav:
namefile.append(onewavfile)
namefiledict = {}
for i in range(0, 153351,1):
for name in namefile:
namefiledict[name] = list(df[i][0])
我也试过for idx, name in enumerate(df):,但这也会导致同样的错误。
[更新] -------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用最后一次) ~/anaconda3/envs/rpython/lib/python3.7/site-packages/pandas/core/indexes/range.py in get_loc(self,key,method,tolerance) 375尝试: --> 376 返回 self._range.index(new_key) 377 除了ValueError:
ValueError: 153353 is not in range
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
<ipython-input-13-30d2f7a02ddf> in <module>
4 for i in range(0, 153351,1):
5 for name in namefile:
----> 6 namefiledict[name] = list(df[i][0])
7 i+=1
~/anaconda3/envs/rpython/lib/python3.7/site-packages/pandas/core/frame.py in __getitem__(self, key)
2993 if self.columns.nlevels > 1:
2994 return self._getitem_multilevel(key)
-> 2995 indexer = self.columns.get_loc(key)
2996 if is_integer(indexer):
2997 indexer = [indexer]
~/anaconda3/envs/rpython/lib/python3.7/site-packages/pandas/core/indexes/range.py in get_loc(self, key, method, tolerance)
376 return self._range.index(new_key)
377 except ValueError:
--> 378 raise KeyError(key)
379 return super().get_loc(key, method=method, tolerance=tolerance)
380
KeyError: 153353
【问题讨论】:
-
循环数据帧的最简单方法是使用
df.itertuples(),尽管通常有更好的方法。你到底想完成什么? -
我想遍历这个 df 并将数组放入其中一个列,然后将其添加到 dict。但是为什么会出现这个错误呢?
-
发布完整的错误消息,包括堆栈跟踪。你应该一直这样做。
-
您收到一个键错误,因为该索引不在数据框中。你为什么要增加
i?看看下面的答案 -
正如 juanpa.arrivillaga 所说,显式循环应该是最后的手段。你能分享更多你的代码和数据,并解释你的程序是做什么的吗?