このデータフレームを検討してください。
id Name Score
314 John 100
345 Sara 200
355 Zack 200
333 Harry 50
334 Chad 50
331 Newton 100
スコアに基づいて新しい演算子列にカスタム値を割り当てたいので、あるスコアが次のスコアよりも小さい場合は1、0より大きい場合は1、同じままの場合は0.5になります。これは私がこれをどのように見せたいかです:
id Name Score Operator
314 John 100 1
345 Sara 200 0.5
355 Zack 200 0
333 Harry 50 0.5
334 Chad 50 1
331 Newton 100 NAN
差分列とブール列の組み合わせを試しましたが、バイナリアプローチから離れるためのアクセス権がありません
まず、条件を設定します。
prev = df.Score.shift(-1)
c1, c2, c3 = df.Score.lt(prev), df.Score.eq(prev), df.Score.gt(prev)
今使用しますnumpy.select
:
out = df.assign(out=np.select([c1, c2, c3], [1, 0.5, 0], np.nan))
id Name Score out
0 314 John 100 1.0
1 345 Sara 200 0.5
2 355 Zack 200 0.0
3 333 Harry 50 0.5
4 334 Chad 50 1.0
5 331 Newton 100 NaN
楽しみのためだけの別の解決策は次の0.5
とおりです(差が小さい場合にのみ機能します):
df.Score.diff(-1).mul(-1).add(0.5).clip(0, 1)
0 1.0
1 0.5
2 0.0
3 0.5
4 1.0
5 NaN
Name: Score, dtype: float64
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加