前提・実現したいこと
pythonのDataFrameでデータ分析前の前処理をしています。
下記のようなDFのA1,A2,A3,A4列とB1,B2,B3列からC1、C2、C3列を作成したいのですが、うまくできません。(下記は実現後のdfの状態です)
index | A1 | A2 | A3 | A4 | B1 | B2 | B3 | C1 | C2 | C3 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 2 | 1 |
1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 2 | 1 |
2 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 3 | 2 | 0 |
3 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 3 | 2 |
4 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 3 | 2 | 1 |
5 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 3 | 2 | 1 |
実現したいことの補足
・A1〜A4で行毎の1が立っている数とB1〜B3で行毎の1が立っている数は必ず合致します。
・A1〜A4は老番から順に、B1〜B3は若番から順に紐づきます。(それぞれ1が立っているデータが紐づく)
・紐づいたAの番号をC1〜C3に代入します。
試したこと
下記でうまくいかないのは、始めに全ての列に数値が入るためということは、わかりますが、どうしたらいいのかわかりません。
for i in range(df.shape[0]): for j in range(4,7): for k in range(0,4)[::-1]: if df.iloc[i,j] == 1 and df.iloc[i,k] == 1: if df.iloc[i,j+3] == 0: df.iloc[i,j+3] = k+1
ご回答のほど、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー