具有条件的Pandas从列中选择一个值,并在新列中逐行乘以标量



在float64中'Target_Labels'的值为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)

我是新来的熊猫,欢迎任何帮助…

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

  • array =final.values
  • row =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

相关内容

  • 没有找到相关文章

最新更新