#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