スポンサーリンク

[Python]pandasのDataFrameで特定の列のみランダムに並べ替える

下記のin.txtがあったときに、2列目のみランダムに並べ替えてDataFrameを作りたい場合がありました。
他に良い方法があるかもですが、とりあえず紹介してみたいと思います。

スポンサーリンク

まずはread_csv()でcsvファイルを読み込む

まずはread_csv()でcsvファイルを読み込みます。

それぞれの列名を、DateとValueとしました。

特定の列のみsample(frac = 1)でランダムに並べ替えて、reset_index(drop = True)でインデックスを再設定

下記のようにValueの列のみ取り出して、sample(frac = 1)でランダムに並べ替えて、reset_index(drop = True)でインデックスを再設定します。
sample()はランダムにサンプリングするが、frac = 1とすることで、全ての行をサンプリングしてくれます。

スポンサーリンク

concatでaxis = 1を設定して列同士を結合

下記のように、concat()でDateの列と先程ランダムに並べ替えたValueの列を結合します。
列同士を結合するので、axis = 1を設定します。

to_datetime()でdatetime型に変換し、set_index()でインデックスに再設定

今回はDate列をdatetime型でインデックスにしたかったので、下記の操作も実行しました。

サンプルコード

下記がサンプルコードになります。

下記が実行結果になります。

スポンサーリンク