に合計施行、および3は、一つにまとめる必要があります。パンダDataframe-ラウンド複数の列が、彼らは、私は、列A、B、およびCは重みで、次のデータフレームを考えてみましょう1
df = pd.DataFrame(data=[[0.56, 0.36, 0.08], [0.42, 0.13, 0.45]], columns=['A', 'B', 'C'])
場合df.sum(軸= 1)を適用すると、実際にはすべてが1になります。私の目標は、同じ列のセットを持つことですが、1つの小数点以下を四捨五入します(10%のバケットに収まるように私のビンを空にする必要があります)。我々はこれを行うときに問題がある:
df.round(1).sum(axis=1)
我々は、0.9(0.4 + 0.1 + 0.4)1.1(0.6 + 0.4 + 0.1)への最初の行の合計ことがわかり、2行目。複数の列に対して「合計が1になる」制約を適用しながら、パンダでラウンドする方法はありますか?
私は最後の重みを1から他の重みの合計を差し引いて設定すると思いますか? – IanS
しかし、私は最後の非ゼロの重みを設定する必要があるでしょう(私の実際の問題は20 +重みを持ち、そのうちの3〜5は与えられた行で非ゼロであり、すべて0はゼロのままでなければならない)。他のウェイトの合計から1を引いた値にランダムな非ゼロ値を設定する方が良いでしょう。 – MarkD