相关疑难解决方法(0)

在pandas中改组/置换DataFrame

在pandas中,按行或按列对数据帧进行随机播放的简单有效方法是什么?即如何编写一个函数shuffle(df, n, axis=0),它接受一个数据帧,一些shuffle n和一个轴(axis=0是行,axis=1是列),并返回已经洗牌n次数的数据帧的副本.

编辑:关键是在不破坏数据帧的行/列标签的情况下执行此操作.如果你只是洗牌df.index,那就失去了所有的信息.我希望结果df与原始相同,除了行的顺序或列的顺序不同.

编辑2:我的问题不清楚.当我说洗牌行时,我的意思是每行独立洗牌.因此,如果您有两列,a并且b我希望每行都自行进行洗牌,那么如果您只是重新排序每一行,那么您之间a和之间的关联就不b一样了.就像是:

for 1...n:
  for each col in df: shuffle column
return new_df
Run Code Online (Sandbox Code Playgroud)

但希望比天真循环更有效.这对我不起作用:

def shuffle(df, n, axis=0):
        shuffled_df = df.copy()
        for k in range(n):
            shuffled_df.apply(np.random.shuffle(shuffled_df.values),axis=axis)
        return shuffled_df

df = pandas.DataFrame({'A':range(10), 'B':range(10)})
shuffle(df, 5)
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

66
推荐指数
6
解决办法
8万
查看次数

标签 统计

numpy ×1

pandas ×1

python ×1