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
'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