Перемешать один столбец в панде - PullRequest
0 голосов
/ 02 января 2019

Как перетасовать только один столбец данных в пандах?

У меня есть Dataframe с производственными данными, которые я хочу загрузить в dev для тестирования. Однако данные содержат информацию, позволяющую установить личность, поэтому я хочу перетасовать эти столбцы.

Столбцы: имя, фамилия, дата рождения, номер SSN, другие данные

Если исходный фрейм данных создан read_csv, и я хочу перевести данные во второй фрейм данных для загрузки sql, но перемешать имя, фамилию и SSN, я бы ожидал, что смогу сделать это:

if devprod == 'prod':
    #do not shuffle data
    df1['HS_FIRST_NAME'] = df[4]
    df1['HS_LAST_NAME'] = df[6]
    df1['HS_SSN'] = df[8]
else:
    df1['HS_FIRST_NAME'] = np.random.shuffle(df[4])
    df1['HS_LAST_NAME'] = np.random.shuffle(df[6])
    df1['HS_SSN'] = np.random.shuffle(df[8])

Однако, когда я пытаюсь это сделать, я получаю следующую ошибку:

Значение пытается быть установлено для копии среза из DataFrame

1 Ответ

0 голосов
/ 03 января 2019

Непосредственная ошибка является признаком использования нецелесообразного подхода при работе с фреймами данных.

np.random.shuffle работает на месте и возвращает None, поэтому присваивается выводnp.random.shuffle не будет работать.Фактически, операции на месте требуются редко и часто не дают существенных преимуществ.

Здесь, например, вы можете использовать np.random.permutation и использовать массивы NumPy через pd.Series.values вместо серии:

if devprod == 'prod':
    #do not shuffle data
    df1['HS_FIRST_NAME'] = df[4]
    df1['HS_LAST_NAME'] = df[6]
    df1['HS_SSN'] = df[8]
else:
    df1['HS_FIRST_NAME'] = np.random.permutation(df[4].values)
    df1['HS_LAST_NAME'] = np.random.permutation(df[6].values)
    df1['HS_SSN'] = np.random.permutation(df[8].values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...