嵌套For循环错误Python

时间:2018-05-23 08:35:32

标签: python pandas numpy for-loop

我正在处理来自CSV的数据框加载。 以下是数据集的链接: https://drive.google.com/open?id=1emA29M1lO3q-2YQOhegKRsAdlydBkgh6

我为同一个程序创建了一个示例。有效。但是当我尝试使用数据集时,会弹出如下错误:

TypeError: ufunc 'multiply' did not contain a loop with signature matching
types dtype('<U32') dtype('<U32') dtype('<U32')

我正在为数据帧中的每一行运行10次随机计算。

for i in range(len(WC2018_Fix.HomeTeam)):
    for j in range(0,10):
        TeamA = WC2018_Fix.iloc[i,0]
        TeamB = WC2018_Fix.iloc[i,1]
        ELO_1 = np.array(WC2018_Fix.iloc[i,2])
        ELO_2 = np.array(WC2018_Fix.iloc[i,3])
        ELOA  = random.random()*ELO_1
        ELOB  = random.random()*ELO_2

有人可以告知发生了什么事吗?

1 个答案:

答案 0 :(得分:1)

在循环中,您可以检查所读取值的格式/类型。 如果预期单元格值不是int / float,则可以输入,然后执行此操作。

for i in range(len(WC2018_Fix.HomeTeam)):
    for j in range(0,10):
        TeamA = WC2018_Fix.iloc[i,0]
        TeamB = WC2018_Fix.iloc[i,1]
        if WC2018_Fix.iloc[i,2].__class__ == str:
          var = int(WC2018_Fix.iloc[i,2]) # Convert accordingly to int
        if WC2018_Fix.iloc[i,3].__class__ == str:
          var2 = int(WC2018_Fix.iloc[i,3])
        ELO_1 = np.array(var)
        ELO_2 = np.array(var2)
        ELOA  = random.random()*ELO_1
        ELOB  = random.random()*ELO_2