在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