改组数据框中的多列
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.permutation
和DataFrame.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
参数控制随机化。
【讨论】:
以上是关于改组数据框中的多列的主要内容,如果未能解决你的问题,请参考以下文章