随机选择列应在 DataFrame 中切换值的行

Randomly selecting rows where the columns should switch values in a DataFrame

给定一个像这样的 DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': np.ones(5), 'B': np.zeros(5), 'C': np.ones(5), 'D': np.zeros(5)})

我希望能够随机 select 一些行,其中 A 和 B 值及其相应的 C 和 D 值 - 但不是列 E 和 F - 切换,以便 B 列值放在 A 列中,反之亦然。

所以不是整行,而是只有某些列(A、B、C、D)应该切换,而 E 和 F 保持它们的值。

有人知道如何实现这个吗?

我认为肯定有比在此处复制 Series 更有效的方法:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': np.ones(5), 'B': np.zeros(5), 'C': np.ones(5), 'D': np.zeros(5)})

rows_to_swap = np.random.choice(len(df), size=3, replace=False)

a_column = df['A'].copy()
b_column = df['B'].copy()

df.loc[rows_to_swap, 'A'] = b_column[rows_to_swap]
df.loc[rows_to_swap, 'B'] = a_column[rows_to_swap]