首页 > 解决方案 > 按固定百分比随机播放 pandas 中的单列

问题描述

我正在尝试使用 Sklearn utils shuffle 函数在每次迭代中按固定百分比(每次迭代中的 2% 行。总迭代次数 = 30)对 pandas 中的单个列进行改组。但它不会改变原始数据框。有什么方法可以在原始数据帧上应用此操作?或者有什么替代方法吗?谢谢。

这是代码:

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))

标签: pythonpandasdataframescikit-learnshuffle

解决方案


您没有分配结果并且 sklearn 输出 numpy 数组:尝试类似

shuffled_dfs = [None] * len(range(0, 30, 2))
for i in range(0, 30, 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 数据帧之间切换


推荐阅读