改组数据框中的多列

Posted

技术标签:

【中文标题】改组数据框中的多列【英文标题】:Shuffling Multi Column in data frame 【发布时间】:2019-12-24 10:55:42 【问题描述】:

我有一个这样的数据框:

'a'                   'b'    'c'    'd'               'e'  'f'
'hello.text'           1      2      'hello2.text'     2   10
'hello3.text'          5      8      'hello4.text'     8   15

现在我需要将“a”、“b”、“c”列随机化或随机化。 像这样的东西:

'a'                   'b'    'c'    'd'               'e'  'f'
'hello3.text'          5      8      'hello2.text'     2   10
'hello.text'           1      2      'hello4.text'     8   15

我该怎么做?

【问题讨论】:

【参考方案1】:

使用np.random.permutationDataFrame.apply 分别处理每一列,因为数据类型不同:

cols = ['a','b','c']

df[cols] = df[cols].apply(lambda x: np.random.permutation(x))
print (df)
               a  b  c              d  e   f
0   'hello.text'  5  2  'hello2.text'  2  10
1  'hello3.text'  1  8  'hello4.text'  8  15

【讨论】:

【参考方案2】:

'a', 'b', 'c' 列随机化在一起,意味着只为这些特定列的行打乱行吗?如果是,那么您需要以下内容:

cols = ['a','b','c']
df[cols] = df[cols].sample(frac=1.0, random_state=0).reset_index(drop=True)
print(df)

            a  b  c            d  e   f
0  hello3.txt  5  8  hello2.text  2  10
1  hello.text  1  2  hello4.text  8  15

您可以使用random_state 参数控制随机化。

【讨论】:

以上是关于改组数据框中的多列的主要内容,如果未能解决你的问题,请参考以下文章

在数据框中的多列上使用 shapiro.test

将多列映射到 Spark 数据框中的单个键

将数据框中的结构类型列拆分为多列

通过比较 pyspark 数据框中的多列来更新一列

将熊猫数据框中的多列更改为日期时间

将列表的列拆分为同一 PySpark 数据框中的多列