我有一个非常大的 CSV 数据,对于列 2 中规定的当前日期之前的日期,我需要将先前的数据附加到第 2 列中每个名称的每一行。我认为表示这个问题的最简单方法是提供一个与我的真实数据相似的详细示例,但显着缩小:
Datatitle,Date,Name,Score,Parameter
data,01/09/13,george,219,dataa,text
data,01/09/13,fred,219,datab,text
data,01/09/13,tom,219,datac,text
data,02/09/13,george,229,datad,text
data,02/09/13,fred,239,datae,text
data,02/09/13,tom,219,dataf,text
data,03/09/13,george,209,datag,text
data,03/09/13,fred,217,datah,text
data,03/09/13,tom,213,datai,text
data,04/09/13,george,219,dataj,text
data,04/09/13,fred,212,datak,text
data,04/09/13,tom,222,datal,text
data,05/09/13,george,319,datam,text
data,05/09/13,fred,225,datan,text
data,05/09/13,tom,220,datao,text
data,06/09/13,george,202,datap,text
data,06/09/13,fred,226,dataq,text
data,06/09/13,tom,223,datar,text
data,06/09/13,george,219,dataae,text
所以对于这个 csv 的前三行,没有以前的数据。因此,如果我们说我们想在当前日期之前的日期为乔治 (row1) 的最后 3 次出现拉取第 3 列和第 4 列,它将产生:
data,01/09/13,george,219,dataa,text,x,y,x,y,x,y
然而,当以前的数据开始变得可用时,我们希望生成一个像这样的 csv:
Datatitle,Date,Name,Score,Parameter,LTscore,LTParameter,LTscore+1,LTParameter+1,LTscore+2,LTParameter+3,
data,01/09/13,george,219,dataa,text,x,y,x,y,x,y
data,01/09/13,fred,219,datab,text,x,y,x,y,x,y
data,01/09/13,tom,219,datac,text,x,y,x,y,x,y
data,02/09/13,george,229,datad,text,219,dataa,x,y,x,y
data,02/09/13,fred,239,datae,text,219,datab,x,y,x,y
data,02/09/13,tom,219,dataf,text,219,datac,x,y,x,y
data,03/09/13,george,209,datag,text,229,datad,219,dataa,x,y
data,03/09/13,fred,217,datah,text,239,datae,219,datab,x,y
data,03/09/13,tom,213,datai,text,219,dataf,219,datac,x,y
data,04/09/13,george,219,dataj,text,209,datag,229,datad,219,dataa
data,04/09/13,fred,212,datak,text,217,datah,239,datae,219,datab
data,04/09/13,tom,222,datal,text,213,datai,219,dataf,219,datac
data,05/09/13,george,319,datam,text,219,dataj,209,datag,229,datad
data,05/09/13,fred,225,datan,text,212,datak,217,datah,239,datae
data,05/09/13,tom,220,datao,text,222,datal,213,datai,219,dataf
data,06/09/13,george,202,datap,text,319,datam,219,dataj,209,datag
data,06/09/13,fred,226,dataq,text,225,datan,212,datak,217,datah
data,06/09/13,tom,223,datar,text,220,datao,222,datal,213,datai
data,06/09/13,george,219,datas,text,319,datam,219,dataj,209,datag
您会注意到 06/09/13 乔治出现了两次,并且两次319,datam,219,dataj,209,datag
他的行都附加了相同的字符串。乔治第二次出现,他附加了这个相同的字符串,因为上面的乔治 3 行是在同一日期。(这只是强调“在当前日期之前的日期”。
从列标题可以看出,我们正在收集最后 3 个分数和相关的 3 个参数,并将它们附加到每一行。请注意,这是一个非常简化的示例。实际上,每个日期将包含几千行,在真实数据中,名称也没有模式,所以我们不希望看到 fred、tom、george 以重复模式彼此相邻。如果有人可以帮助我弄清楚如何最好地实现这一目标(最有效),我将非常感激。如果有什么不清楚的地方请告诉我,我会补充更多细节。任何建设性意见表示赞赏。非常感谢