基于参数化计算生成字段的Python脚本

时间:2013-09-11 23:41:58

标签: python

我对python很新,并得到了一个有趣的请求。我有一个结构本身的结果集,但规模更大,包括多个不同的acct。无' S

acct no.   date         Event
11111111   2012/01/01   1
11111111   2012/01/05   1

我将附加一个辅助日期对象,它将结果集转换为此输出:

acct no.   date         Event
11111111   2012/01/01   1
11111111   2012/01/02   0
11111111   2012/01/03   0
11111111   2012/01/04   0
11111111   2012/01/05   1
11111111   2012/01/06   0

见下请求:

我被要求建立一个测量两个日期之间距离的脚本,计算差异,天数,如果它落在那个距离内,则生成一个标志。棘手的部分是当有一个新的记录集时,我需要将第一个记录集的结果附加到下一个记录集上,然后继续计算和标记生成。

最终输出应该如下所示:

acct no.   date         Event  Recent
11111111   2012/01/01   1      Y
11111111   2012/01/02   0      Y
11111111   2012/01/03   0      N
11111111   2012/01/04   0      N
11111111   2012/01/05   1      Y
11111111   2012/01/06   0      Y

我在python中仍然相对绿,不能想到从哪里开始。

非常感谢任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

从您的问题来看,听起来您可以计算日期差异,并且无法将“最近”标志附加到文件中的每一行。假设您正在从文本文件中读取帐户信息,这里有一些可以帮助您入门的内容。如果您的信息位于名为accounts.txt的文件中:

import shutil

recentFlag = 'Y' # Example only. It sounds like you have your own way of determining this
filename = 'accounts.txt'

shutil.copy(filename, filename+'~') # Save a backup copy of the file you're editing.
                                    # We will read from this file and write to the original


fIn = open(filename+'~', 'r')
fOut = open(filename, 'w')


header = fIn.readline() # Read the first (header) line from your file, and write it to the output file. If the real file has multiple header lines, loop this
fOut.write(header + '\tRecent')

for line in fIn:
  fOut.write(line + '\t' + recentFlag + '\n')
  fOut.flush()

fIn.close()
fOut.close()

快乐的编码!