Python中的CSV文件(滑动窗口)

2024-05-08 15:02:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者,我需要一个在Python中操作csv文件的帮助。 我尝试对数据集中的每一行执行滑动窗口机制。在

例如,如果数据集是

timestamp | temperature | windspeed
965068200   9.61883  60.262   
965069100   9.47203  60.1664 
965070000   9.31125  60.0145   
965070900   9.13649  59.8064

如果用户指定的窗口大小为3,则结果应该类似于

^{pr2}$

我可以通过在Java.阅读并生成包含转换数据集的新CSV。 这是密码 http://pastebin.com/cQnTBg8d研究

我需要用Python来做这个,请帮我解决这个问题。在

谢谢你


Tags: 文件csv数据用户http密码javatimestamp
1条回答
网友
1楼 · 发布于 2024-05-08 15:02:13

这个答案假设您使用的是python3.x-对于python2.x,需要进行一些更改(一些明显的地方会被注释)

对于问题中的数据格式,这可能是Python中的一个起点:

import collections

def slide(infile,outfile,window_size):
    queue=collections.deque(maxlen=window_size)
    line=infile.readline()
    headers=[s.strip() for s in line.split("|")]
    row=[headers[0]]
    for h in headers[1:]
        for i in reversed(range(window_size)):
            row.append("%s-%i"%(h,i))
    outfile.write(" | ".join(row))
    outfile.write("\n")
    for line in infile:
        queue.append(line.split())
        if len(queue)==window_size:
            row=[queue[-1][0]]
            for j in range(1,len(headers)):
                for old in queue:
                    row.append(old[j])
            outfile.write("\t".join(row))
            outfile.write("\n")

ws=3
with open("infile.csv","r") as inf:
    with open("outfile.csv","w") as outf:
        slide(inf,outf,ws)

实际上,这段代码是关于使用一个队列来保存窗口的输入行,而不是更多——其他的都是从文本到列表再到文本。在

使用实际的csv数据(见注释)

^{pr2}$

相关问题 更多 >