gpt4 book ai didi

python - 如何将连续的行与它们之间不断增加的重叠结合起来(就像滚动窗口一样)?

转载 作者:行者123 更新时间:2023-12-04 02:28:37 24 4
gpt4 key购买 nike

我目前正在开始学习 Pandas 并努力用它完成一项任务。我想做的是通过组合两个连续的行并增加它们之间的重叠来增加存储在数据框中的数据。就像一个滚动窗口。

我相信这个问题可以用这个小数据框来举例说明:

df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], columns=['A', 'B', 'C', 'D'])

给出:

    A   B   C   D
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12

有了它,我想完成但我不知道如何完成的是像下一个这样的数据框:

    A   B   C   D
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10
7 8 9 10 11
8 9 10 11 12

就好像我们在每对初始数据帧之间使用了多个滚动窗口。请注意,我没有使用这个特定的数据框(这些值并不是真正按照 1,2,3,4...排序的)。我使用的是从 csv 导入的通用数据框。

这可能吗?提前致谢!


编辑

感谢所有回复。 anky 和 ​​Shubham Sharma 给出的两个答案都很完美。以下是将它们与我的真实数据框一起使用所获得的结果:

初始数据框 enter image description here

根据我的问题需要添加多个滚动窗口后 enter image description here

最佳答案

可能不那么优雅,但试试:

def fun(dataframe,n):
l = dataframe.stack().tolist()
return (pd.DataFrame([l[e:e+n] for e,i in enumerate(l)],
columns=dataframe.columns).dropna().astype(dataframe.dtypes))

fun(df,df.shape[1])

A B C D
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10
7 8 9 10 11
8 9 10 11 12

关于python - 如何将连续的行与它们之间不断增加的重叠结合起来(就像滚动窗口一样)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65687738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com