Перетасовка столбцов фрейма данных Pandas

#python #pandas #dataframe

#python #pandas #Фрейм данных

Вопрос:

Мне нужно перетасовать столбцы фрейма данных. В настоящее время я делаю это так:

 import random
import pandas as pd
import numpy

df = pd.DataFrame(numpy.random.rand(1,5))
print (df)
df_as_list = df.values.tolist()[0]
random.shuffle(df_as_list)
df_shuffled = pd.DataFrame(df_as_list).transpose()
print (df_shuffled)
  

Перед:

           0         1         2         3         4
0  0.472918  0.261734  0.987053  0.921826  0.144114
  

После:

           0         1         2         3         4
0  0.472918  0.921826  0.987053  0.144114  0.261734
  

Таким образом, он выполняет свою работу, но должен быть лучший способ сделать это. Есть идеи?

Ответ №1:

попробуйте:

 def shuffle(df, n=1):
    for _ in range(n):
        df.apply(np.random.shuffle)
        return df
df = pd.DataFrame({'A':range(10), 'B':range(10)})

shuffle(df)

print(df)
  

Ответ №2:

Немного по-другому:

 cols = list(df.columns.values)
random.shuffle(cols)
df.columns = cols