df_array[i][5]= int(df_array[i][5]) 6 df_array[i][6] = int(df_array[i][6]) ----> 7 new_array[df_array[i][5]-2013][df_array[i][6]-1][df_array[i][1]][df_array[i][2]]+=df_array[i][3] 8 df_new = pd.DataFrame(columns=['创建年', '创建月', '物料编号', '应发库', '销售订单数量']) 9 i=0 IndexError: index -1953 is out of bounds for axis 0 with size 4
时间: 2023-09-30 16:11:32 浏览: 56
根据报错信息,问题可能出现在第7行的代码中,因为它尝试访问一个超出数组索引范围的元素。具体来说,它尝试访问一个小于0或大于数组大小的索引值。你需要检查数组的大小和索引值,并确保索引值不会超出数组范围。此外,根据第8行的代码,你需要创建一个名为`df_new`的空数据框架来存储数据。如果数据框架未创建,则可能会导致`IndexError`。
相关问题
如何检查检查代码中df_array[i][5]、df_array[i][6]、df_array[i][1]和df_array[i][2]这些索引值是否都是整数
可以使用`isinstance()`函数检查这些索引值是否都是整数类型。例如:
``` python
if isinstance(df_array[i][5], int) and isinstance(df_array[i][6], int) and isinstance(df_array[i][1], int) and isinstance(df_array[i][2], int):
# 执行相关操作
else:
# 处理错误情况
```
这里使用了`isinstance()`函数检查这些索引值是否都是整数类型,如果都是整数类型,就执行相关的操作,否则就处理错误情况。
如果发现有一些索引值不是整数类型,可以通过`int()`函数将其转换为整数类型。例如:
``` python
df_array[i][5] = int(df_array[i][5])
```
这里将`df_array[i][5]`转换为整数类型,以确保它可以作为数组的索引值。
new_array=np.zeros((4,12,100,9)) 2 for i in range(len(df_array)): ----> 3 new_array[df_array[i][5]-2013][df_array[i][6]-1][df_array[i][1]][df_array[i][2]]+=df_array[i][3] 4 df_new = pd.DataFrame(columns=['创建年', '创建月', '物料编号', '应发库', '销售订单数量']) IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices需要如何更改
这个错误是因为在使用索引时,使用了非整数类型的值。可能是因为df_array中的某些值不是整数类型导致的。你可以使用astype()方法将其转换为整数类型。另外,代码中的第3行需要将df_array的长度存储在变量中,以避免在循环中多次计算。下面是修改后的代码:
```
df_array = df_array.astype(int)
array_len = len(df_array)
new_array = np.zeros((4, 12, 100, 9))
for i in range(array_len):
new_array[df_array[i][5]-2013][df_array[i][6]-1][df_array[i][1]][df_array[i][2]] += df_array[i][3]
df_new = pd.DataFrame(columns=['创建年', '创建月', '物料编号', '应发库', '销售订单数量'])
```
希望能对你有所帮助。
阅读全文
相关推荐

















