我有一个像这样组织的数据集(在熊猫系列中):
s: AAAAABBBBBCCCCCAAAAABBBBBCCCCCAAAAABBBBBCCCCC....
n(= 3)以k(= 5)个样本块组织的数据流。
是否有高效的方法在pandas中使用步幅或某些东西将数据解压缩为n系列?
a = # All the A's
b = # All the B'a
c = # All the C's
理想情况下,使用原始索引。 步幅似乎只是设置为每第n次选择,而不是每隔m次选择k。
答案 0 :(得分:1)
考虑系列s
s = pd.Series(list('AAAAABBBBBCCCCCAAAAABBBBBCCCCCAAAAABBBBBCCCCC'))
重塑基础数组和切片
s.values.reshape(-1, 5)[::3].ravel()
['A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A']
s.values.reshape(-1, 5)[1::3].ravel()
['B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B']
s.values.reshape(-1, 5)[2::3].ravel()
['C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C']
您可以使用
更进一步v = s.values
v.reshape(-1, 3, 5).transpose(1, 0, 2).reshape(3, -1)
[['A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A' 'A']
['B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B']
['C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C' 'C']]