【问题标题】:How to shuffle a pandas dataframe randomly by row [duplicate]如何按行随机打乱熊猫数据框[重复]
【发布时间】:2018-06-04 00:58:16
【问题描述】:

我正在尝试按行而不是按列对 pandas 数据帧进行洗牌。

我有以下数据框:

   row1    row2    row3
1    3      1       6
2    5      2       7
3    7      3       8 
4    9      4       9

并希望对 df 进行洗牌以实现随机排列,例如:

   row1    row2    row3
1    6      3       1
2    3      9       2
3    7      5       8 
4    4      9       7

我试过了:

df1 = df.reindex(np.random.permutation(df.index))

但是,这仅按列而不是按行排列。

【问题讨论】:

  • 不确定我是否理解 - 如果它是每行,每行中的元素不应该留在那里,而是简单地洗牌吗?

标签: python pandas numpy shuffle


【解决方案1】:

您可以通过使用示例方法来实现此目的,并将其应用于轴 #1。 这将打乱一行中的元素:

df = df.sample(frac=1, axis=1).reset_index(drop=True)

您想要的数据框看起来如何完全随机化,这可以通过按行然后按列随机排列来完成:

df = df.sample(frac=1, axis=1).sample(frac=1).reset_index(drop=True)

编辑:

import numpy as np
df = df.apply(np.random.permutation, axis=1)    

【讨论】:

  • 这只会打乱每列中的值,并将值移动到数据框中的不同位置。我希望对每一行进行洗牌,以使每列的总和不等于原始总和。希望这是有道理的?
  • 你是对的!我编辑了我的答案!
猜你喜欢
  • 2019-01-02
  • 2018-09-06
  • 2014-09-02
  • 1970-01-01
  • 2017-06-01
  • 2021-03-20
  • 2022-01-27
  • 2016-06-04
  • 2023-01-14
相关资源
最近更新 更多