さて、これを説明するのは少し難しいです。基本的に、次のようなデータフレームがあります。各列(0〜90)は、0日から90日後の90日までの日を表し、各セルの数値は、そのIDの特定の機能の合計です。その日:
ID 0 1 2 3 4 5 6 7 8 ... 81 82 83 84 85 86 87 88 89 90 total
------------------------------------------------------------------------------------------------------
0 A 2 21 0 18 3 0 0 0 2 ... 0 0 0 0 0 0 0 0 0 0 156
1 B 0 20 12 2 0 8 14 23 0 ... 0 0 0 0 0 0 0 0 0 0 231
2 C 0 38 19 3 1 3 3 7 1 ... 0 0 0 0 0 0 0 0 0 0 78
3 D 3 0 0 1 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0 5
最初に必要なのは、前の値の合計が「合計」値の90%に達した列の番号を表示する新しい列です。例:最初の行について、そのIDの値の合計が合計の90%(156)に達したのはいつか(どの日、0から90の間のどこか)知りたいです。新しい列を保持します。合計の90%に達した日の値、次のようになります。
ID 0 1 2 3 4 5 6 7 8 ... 81 82 83 84 85 86 87 88 89 90 total day_90%
--------------------------------------------------------------------------------------------------------------
0 A 2 21 0 18 3 0 0 0 2 ... 0 0 0 0 0 0 0 0 0 0 156 54
これを試して:
df_pct = df.cumsum(axis=1).div(df.sum(axis=1), axis=0)
df['day_90%'] = (df_pct > .9).idxmax(axis=1)
idxmax
累積パーセントが.9より大きい場合に初めてTrueを返すために使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加