以固定百分比随机排列熊猫中的单列

问题描述

我正在尝试使用Sklearn utils随机播放功能按固定百分比(每次迭代中的行的2%。总迭代= 30)对熊猫中的单个列进行混洗。但这不会更改原始数据框。有什么方法可以对原始数据框应用此操作?还是有其他替代方法?谢谢。

代码如下:

from sklearn.utils import shuffle

for i in range(0,30,2):
    percent = (i/100) * len(df_task2_train)
    shuffle(df_task2_train['class'],n_samples=int(percent))

解决方法

您没有分配结果,而是sklearn输出numpy数组:尝试类似

shuffled_dfs = [None] * len(range(0,30,2))
for i in range(0,2):
    percent = (i/100) * len(df_task2_train)
    shuffled_dfs[i] = pd.DataFrame(shuffle(df_task2_train['class'],n_samples=int(percent)))

如果要合并所有产生的df,则可以

shuffled_df = pd.concat(shuffled_dfs)

坦率地说,我不会使用sklearn,而是使用pandas.DataFrame.sample,这样您就不必在numpy数组和pandas数据帧之间切换