python - 使用滑动窗口和转置进行分组

标签 python pandas numpy dataframe

数据框 (df) 包含如下两列:

A    B
46   0
45   1
46   1
51   1
47   1
46   1
45   0
48   0
47   0
45   1
49   1

我需要为每三行设计一种滑动窗口分组,这样:

1) 取前三行,转置 column(A) 并追加 column(B) 的第三个条目,所以我们得到一行四列,如下所示:

46 45 46 1

2) 然后向下移动一行(即从原始 df 中的第 2 行开始),重复步骤 1,得到第二个输出,如下所示。

45 46 51 1

3) 在每次迭代中,我们得到如下连续输出:

46 51 47 1
51 47 46 1
47 46 45 0
...

总而言之,所需的输出是 -

46 45 46 1
45 46 51 1
46 51 47 1
51 47 46 1
47 46 45 0
...

最佳答案

这是一个使用 numpystride_tricks 的解决方案 -

as_strided = np.lib.stride_tricks.as_strided

w = 3  # window size

i = as_strided(df.A.values, (len(df) - (w - 1), w), df.A.strides * 2)
j = df[['B']].values[(w - 1):]

np.hstack((i, j))

array([[46, 45, 46,  1],
       [45, 46, 51,  1],
       [46, 51, 47,  1],
       [51, 47, 46,  1],
       [47, 46, 45,  0],
       [46, 45, 48,  0],
       [45, 48, 47,  0],
       [48, 47, 45,  1],
       [47, 45, 49,  1]])

关于python - 使用滑动窗口和转置进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505790/

相关文章:

python - 如何访问二维列表中的元组

python - 为什么我通过pandas访问MySQL时得到Timedelta类型

python - 百分位计算 : Can I convert this for loop to a vector operation?

python - 在 sklearn 中绘制类别权重的验证曲线

Python Regex - 在字符串中查找带逗号的数字

python - 特殊过滤器 pandas dataframe

python - 循环遍历列并执行计算

python - 从拆分的 .csv 数据集制作线性回归模型的最佳方法?

python - 根据每个子数组的累积和对 NXM Numpy 数组进行排序

python - 如何限制 Python 线程?