遍历熊猫数据框并分配值

时间:2020-05-23 23:21:41

标签: python pandas

这可能是一个非常愚蠢的问题,但是我一直在本网站以及其他网站上进行搜索,但尚未找到有效的答案。我试图将两个数组相乘并将值分配给嵌套循环内的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语法。预先感谢您的帮助。

1 个答案:

答案 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