Pandas 条件为 select 列中的值并逐行乘以新列中的标量

Pandas with a condition select a value from a column and multiply by scalar in new column, row by row

'Target_Labels' 中的值是 float64 中的 0.0,1.0,2.0。

根据这个值,我想在 'B365A'、'B365D'、'B365H' 三列之一中查找一个值,然后在新列中将该值乘以 10 .此操作需要在整个 DataFrame 中按行进行。

我尝试了很多组合,但似乎没有任何效果...

final['amount'] = final['Target_Labels'].apply((lambda x: 'B365A' * 10 if x==0.0 else ('B365D' * 10 if x ==1 else 'B365H' * 10))
 
def prod(x, var1, var2, var3, var4):

    if (x[var4])==0:
         x[var3]*10
    elif (x[var4])==1:
        x[var1]*10
    else:
        x[var2]*10
    return x
final['montant'] = final.apply(lambda x: prod(x, 'B365D', 'B365H','B365A', 'Target_Labels'), axis=1)

我是 Pandas 的新手,欢迎任何帮助...

使用 numpy 建立索引并获取单个单元格:

  • 数组=final.values
  • 行 = range(len(df))
  • col = final['Target_Labels'] - 1
>>> final
   B365A  B365D  B365H  Target_Labels
0     11     12     13              1
1     11     12     13              2
2     11     12     13              3

>>> final['amount'] = final.values[(range(len(final)),
                                    final['Target_Labels'] - 1)] * 10

>>> final
   B365A  B365D  B365H  Target_Labels  amount
0     11     12     13              1     110
1     11     12     13              2     120
2     11     12     13              3     130