[解決済み] pandasでDataFrameをシャッフル/置換する
2023-06-05 10:18:11
質問
pandasでデータフレームを行または列単位でシャッフルする簡単で効率的な方法は何ですか?すなわち、どのように関数を書くか
shuffle(df, n, axis=0)
を書き、データフレーム、シャッフルの数
n
と軸(
axis=0
は行である。
axis=1
は列)、シャッフルされたデータフレームのコピーを返します。
n
回シャッフルされたデータフレームのコピーを返します。
Edit
: 重要なのは、データフレームの行/列ラベルを破壊することなくこれを行うことです。もし、ただシャッフルするだけなら
df.index
をシャッフルすると、その情報はすべて失われてしまいます。私は結果の
df
は、行の順序または列の順序が異なることを除いて、オリジナルと同じであることが必要です。
編集2
: 私の質問は不明瞭でした。私が行をシャッフルすると言ったとき、私は各行が独立してシャッフルすることを意味します。つまり、2つの列がある場合
a
と
b
の間に同じ関連付けがないように、それぞれの行を独自にシャッフルしてほしいのです。
a
と
b
のように、それぞれの行を全体として並べ替えるだけです。のようなものです。
for 1...n:
for each col in df: shuffle column
return new_df
しかし、できれば素朴なループ処理よりも効率的であって欲しいものです。これは私にとってはうまくいきません。
def shuffle(df, n, axis=0):
shuffled_df = df.copy()
for k in range(n):
shuffled_df.apply(np.random.shuffle(shuffled_df.values),axis=axis)
return shuffled_df
df = pandas.DataFrame({'A':range(10), 'B':range(10)})
shuffle(df, 5)
どのように解決するのですか?
In [16]: def shuffle(df, n=1, axis=0):
...: df = df.copy()
...: for _ in range(n):
...: df.apply(np.random.shuffle, axis=axis)
...: return df
...:
In [17]: df = pd.DataFrame({'A':range(10), 'B':range(10)})
In [18]: shuffle(df)
In [19]: df
Out[19]:
A B
0 8 5
1 1 7
2 7 3
3 6 2
4 3 4
5 0 1
6 9 0
7 4 6
8 2 8
9 5 9
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] pandas GroupByを使ってグループごとの統計情報(カウント、平均値など)を取得する?
-
[解決済み] pandas が他の列の値に基づいて新しい列を作成する / 複数の列の関数を行単位で適用する
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて