随机选择列应在 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]
给定一个像这样的 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]