【发布时间】:2019-03-08 23:33:18
【问题描述】:
我有一个包含预处理数据的数据框,这样每 4 行就是一个序列(稍后将被重新整形并用于 lstm 训练)。
我想洗牌数据框,但我想保持每个行序列不变。例如:
a = [1,2,3,4,10,11,12,13,20,21,22,23] 会变成类似:a = [20,21,22,23,1,2,3,4,10,11,12,13]。
df.sample(frac=1) 是不够的,因为它会破坏序列。
解决方案,感谢@Wen-Ben:
seq_length = 4
length_array = np.arange((df.shape[0]//seq_length)*seq_length)
trunc_data = df.head((df.shape[0]//seq_length)*seq_length)
d = {x : y for x, y in trunc_data.groupby(length_array//seq_length)}
yourdf = pd.concat([d.get(x) for x in np.random.choice(len(d),len(d.keys()),replace=False)])
【问题讨论】:
-
帧中是否还有其他列每行序列有一个唯一值?例如,对于序列 1、2、3、4,该列可以具有值 1,对于 10、11、12、13,该列可以具有值 2。如果没有,添加这样的列可以吗?
-
@suicidalteddy 1,2,3,4 代表某列的 4 行,而不是一行。我可以添加另一列 - 但它有什么帮助?请记住,许多值会重复