随机选择列应在DataFrame

时间:2018-06-09 09:06:48

标签: python python-3.x pandas dataframe shuffle

给出像这样的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)})

我希望能够随机选择多个行,其中A和B值以及相应的C和D值 - 但不是E和F列 - 被切换,以便将B列值放入A中列,反之亦然。

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

有没有人对如何做到这一点有任何想法?

1 个答案:

答案 0 :(得分:3)

我认为肯定比在这里复制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]