这可能是一个非常愚蠢的问题,但是我一直在本网站以及其他网站上进行搜索,但尚未找到有效的答案。我试图将两个数组相乘并将值分配给嵌套循环内的2D数组。
我有两个变量“ cars”和“ scrappage”。我想明智地将每个元素相乘,并创建一个10x10的2D数组。
我能够在MATLAB中执行此操作,但是我是python的新手,所以我知道我可能错误地使用了Pandas数据框。我已经尝试调试代码,并且除数组乘法和将值分配给2D数组外,所有内容都按预期运行(创建数据帧,循环等)。
我知道这是一个索引错误,我不断收到“ IndexError:单个位置索引器超出范围”消息。
这是我的代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
cars = pd.DataFrame([1000,2000,3000,4000,5000,6000,7000,8000,9000,10000])
scrappage = pd.DataFrame([1,.95,.86,.75,.62,.44,.30,.20,.12,.04])
Fleet = pd.DataFrame([])
i=0
j=0
for i in range(0,len(cars)):
for j in range(0,len(scrappage)):
Fleet.iloc[i,j]= cars.iloc[i,0] * scrappage.iloc[j,0]
#This^ line is causing the error.
j= j+1
i=i+1
我确信这对大多数人来说可能很简单,但是我在努力使用Pandas语法。预先感谢您的帮助。
答案 0 :(得分:1)
您应该给它适当的索引和列,而不是将fleet
定义为空数据框。您可以尝试以下操作:-
import numpy as np
import pandas as pd
cars = pd.DataFrame([1000,2000,3000,4000,5000,6000,7000,8000,9000,10000])
scrappage = pd.DataFrame([1,.95,.86,.75,.62,.44,.30,.20,.12,.04])
fleet = pd.DataFrame(index=range(len(cars)),columns=range(len(scrappage)))
i=0
j=0
for i in range(0,len(cars)):
for j in range(0,len(scrappage)):
fleet.iloc[i,j]= cars.iloc[i,0] * scrappage.iloc[j,0]
j= j+1
i=i+1