【python】【pandas】任意条件をもとにダミーデータ列を作成する方法

実現したいこと

以下の【df】の「id」から、【任意条件】をもとに、ユニークのダミーデータを割り当てた「uniqueid」列を作成したく、その方法を色々と検索し試みたのですが、うまくいかず、行き詰っています。
知見のある方、ご教示いただけないでしょうか。

【任意条件】
「居住地」「勤務地」の値が日(=day列:15-17)をまたいでも、それぞれ同一の場合、異なる「id」を同一人物とみなし、
「uniqueid」にユニークのダミー値を割り当てる

【ダミーデータ】
適当な文字列

【df】
id  |  居住地  |  勤務地  |  day  |
aa1    111111    112233    15
aa2    111112    112231    15
aa3    111113    112232    15
aa4    111114    112234    15
aa5    111115    112235    15
aa6    111116    112236    15
bb1    111111    112233    16
bb3    111113    112232    16
bb5    111115    112235    16
bb6    111116    112236    16
cc1    111111    112233    17
cc3    111113    112232    17
cc5    111115    112235    17

【実現したいこと】
id  |  居住地  |  勤務地  |  day  |  uniqueid  |
aa1    111111    112233    15     aabbcc1
bb1    111111    112233    16     aabbcc1
cc1    111111    112233    17     aabbcc1
aa2    111112    112231    15     aaaa222
aa3    111113    112232    15     aabbcc3
bb3    111113    112232    16     aabbcc3
cc3    111113    112232    17     aabbcc3
aa4    111114    112234    15     aaaa444
aa5    111115    112235    15     aabbcc5
bb5    111115    112235    16     aabbcc5
cc5    111115    112235    17     aabbcc5
aa6    111116    112236    15     aaabbb6
bb6    111116    112236    16     aaabbb6

発生している問題・分からないこと

条件指定におけるダミーデータの付与

該当のソースコード

特になし

試したこと・調べたこと

上記の詳細・結果

df = df.groupby(by=["居住地","勤務地","day","id"]).reset_index()

【結果】
id  |  居住地  |  勤務地  |  day  |
aa1    111111    112233    15
aa2    111112    112231    15
aa3    111113    112232    15
aa4    111114    112234    15
aa5    111115    112235    15
aa6    111116    112236    15
bb1    111111    112233    16
bb3    111113    112232    16
bb5    111115    112235    16
bb6    111116    112236    16
cc1    111111    112233    17
cc3    111113    112232    17
cc5    111115    112235    17

補足

【実現したいこと】
id  |  居住地  |  勤務地  |  day  |  uniqueid  |
aa1    111111    112233    15     aabbcc1
bb1    111111    112233    16     aabbcc1
cc1    111111    112233    17     aabbcc1
→aa1,bb1,cc1は、日をまたいでも(day:15-17)「居住地」「勤務地」が同一なので、同一人物とみなし、aabbcc1をユニーク値として付与。
aa2    111112    112231    15     aaaa222
→aa2は、このデータのみのため、、aaaa22をユニーク値として付与。
aa3    111113    112232    15     aabbcc3
bb3    111113    112232    16     aabbcc3
cc3    111113    112232    17     aabbcc3
aa4    111114    112234    15     aaaa444
aa5    111115    112235    15     aabbcc5
bb5    111115    112235    16     aabbcc5
cc5    111115    112235    17     aabbcc5
aa6    111116    112236    15     aaabbb6
bb6    111116    112236    16     aaabbb6
→aa6,bb6は、日をまたいでも(day:15,16)「居住地」「勤務地」が同一なので、同一人物とみなし、aaabbb6をユニーク値として付与。

コメントを投稿

0 コメント