私は約2000行の複数列dfを持っています。 はDF次のようになります。異なる列と異なる行の値を照合して新しい列を作成するpython pandas
site le_cell le_id ca ca_id
1 101 1011 1 NAN NAN
2 101 1012 2 NAN NAN
3 101 1013 3 NAN NAN
4 110 1101 1 2 11
5 110 1102 2 2 12
6 110 1103 3 2 13
7 110 1104 11 2 1
8 110 1105 12 2 2
9 110 1106 13 2 3
は、ここで問題です。 'part_id'という名前の新しい列を作成する必要があります。 Groupby 'site'、 'ca'(ca = NAN)がない場合、 'part_id'はle_id(part_id = le_id)と等しくなります。 'ca'がある場合、 'ca_id'と 'part_id'の値が1,2,3.1となる。1と11 = 1,2,12 = 2,3と13 = 3。 希望出力:
site le_cell le_id ca ca_id part_id
1 101 1011 1 NAN NAN 1
2 101 1012 2 NAN NAN 2
3 101 1013 3 NAN NAN 3
4 110 1101 1 2 11 1
5 110 1102 2 2 12 2
6 110 1103 3 2 13 3
7 110 1104 11 2 1 1
8 110 1105 12 2 2 2
9 110 1106 13 2 3 3
le_idの値を11,12,13から1,2,3に変換することはできません。だから私は 'ca'を通って 'le_cell'と同じ ' le_id 'を' ca_id 'として追加します。
私はdictに変換しようとしましたが、それはうまくいかないでしょう、どのように起動するのか分かりません。 少なくとも、私にいくつかのヒントを与えてください。
@jezraelこのソリューションは、データ例とルールをベースにしています:) OPの例がすべての「ナノ」ケースをカバーするならば、これはうまくいくはずです – zipa