質問: ### 前提・実現したいこと Pandasの列から(ex.2,4,12,42,3,54,76,86,2,8)順番通りに(ex.2,4,12)任意の数をランダムに抽出するにはどうすればいいですか? (ex.2,4,12 42,3,54 12,42,3のように任意の数が3なら3つpandasの列の順番は変えずに、ランダムな3つを抽出) また、上から3個ずつ抽出して行く方法も教えてくだい。 ### 試したこと df.sample() で列からランダムに抽出できると書いてあったのですが、順番通りではなく単にランダムに抽出されてしまい。欲しい結果が取れません。 for文で出来ると思うのですが、0:3 4:6 7:10とスタートと終わりの変数をどうやって変えていけばいいのか分かりません。
回答: > > Pandasの列から(ex.2,4,12,42,3,54,76,86,2,8)順番通りに(ex.2,4,12)任意の数をランダムに抽出するにはどうすればいいですか? > > (ex.2,4,12 42,3,54 12,42,3のように任意の数が3なら3つpandasの列の順番は変えずに、ランダムな3つを抽出) > > > についてのみ回答します。 `dataframe`の列リストに限らず、一般的なリストから目的の値を取り出すコード例です。 もっとスマートな手段があるかもしれませんが。 あとは結果リストをもとに列を抽出すればよいです。 > > また、上から3個ずつ抽出して行く方法も教えてくだい。 > > > についてですが、目的含め(なぜ3行ずつ走査したいのか?)ちょっと私には分かりかねるので回答は控えます。 ``` import random cols = [2,4,12,42,3,54,76,86,2,8] idx = list(range(len(cols)))# colsリスト位置のリストを生成 print(idx) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] random.shuffle(idx) # シャッフル print(idx) # [2, 1, 5, 8, 9, 7, 3, 6, 0, 4] idx = idx[0:3] # 先頭3個 print(idx) # [2, 1, 5] idx.sort() # 昇順ソート print(idx) # [1, 2, 5] for i in idx: print(i,'番目の列は',cols[i]) ```