python - 如何将连续的行与它们之间越来越多的重叠结合起来(就像滚动窗口一样)?
问题描述
我目前正在开始学习 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 给出的两个答案都很完美。这是通过将它们与我的真实数据框一起使用而获得的结果:
解决方案
可能不那么优雅,但尝试:
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
推荐阅读
- javascript - XHR GET 请求参数对象
- c# - 使用反射 linq c# 进行排序
- amazon-web-services - AWS 中强大的无服务器 ETL 流
- replication - 如何使用“typeorm 中的复制”
- python - 'import RPi.GPIO as GPIO' 不起作用,不管我做什么
- django - 在 Django rest 框架中添加 m2m 关系
- oauth - OAuth2 `expires_in` 用途
- sublimetext3 - Sublime Text 中的图像预览:如何将棋盘背景转换为编辑器背景以获取透明图像?
- delphi - 如何研究ServiceStart为什么不启动服务?
- javascript - 谷歌云功能:开玩笑测试不识别打字稿语法