- 環境
Mac
Python 3.7.3
Jupyter Notebook 5.7.8

- やりたいこと
親ID列・子ID列を持ったデータフレームがあります。
このとき、全行を単純にランダムソートするのではなく、同じ親IDを持つ行をグループ化した上で、そのグループをランダムソートできるでしょうか。

- やったこと
一部の抽出対象のparent-idが格納された配列を用意。
isinメソッドでマッチしたデータを出力しようとしましたが、parent-idをひとかたまりにランダム出力されるのではなく、単純なランダムソートで出力されてしまいます。

Python Code

lis = [2, 3, 1] #parent-idが1~3までのものが出力対象
test_df = pd.DataFrame({"parent-id": [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4],
                        "child-id": [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]})

f = lambda x: x[(x["parent-id"].isin(lis))]
test_df.groupby(["parent-id"]).apply(f).sample(frac=1, random_state=0)

出力結果