私はpandas DataFrameを取得しようとしていますが、1列を取り出し、その列の内容をシャッフルしてからDataFrameに戻して返します。これは使用されるコードです:Numpy .shuffleは毎回同じ結果を返します
def randomize(self, data, column):
'''Takes in a pandas database and randomizes the values in column.
data is the pandas dataframe to be altered.
column is the column in the dataframe to be randomized.
returns the altered dataframe.
'''
df1 = data
df1.drop(column, 1)
newcol = list(data[column])
np.random.shuffle(newcol)
df1[column] = newcol
return df1
実行するたびに同じ出力が得られます。何故ですか?
注:毎回同じデータフレームを使用しています。
戻り値( 'DataFrame.drop()')に何も指定せず、 'inplace = True'を指定していないので、' drop'は何もしていないようです。あなたは 'randomize'の戻り値をデータフレームに割り当てないことで同様の誤りを犯していますか?返す前に 'print(df1)'していれば、( 'column'が有効であれば)正しくランダム化されているはずです。 – jedwards
もう一度@jedwardsが言っていること。あなたの最初の2行は 'df1 = data.drop(列、軸= 1)'に結合する必要があります –