Python:从当前行减去上一行索引,相同索引[没有Pandas]

时间:2017-08-01 16:23:32

标签: python list data-structures time

我是一个Python(和整个编程)新手。我已经看到了数百个关于此的问题,但都使用pandas包进行数据分析。我已经有几百行未使用pandas的代码,所以我想尽可能避免使用pandas,或者如果我可以使用pandas重构我的数据,我愿意接受建议。

我将数千行原始数据作为entries列入列表。我使用columnentries创建另一个列表,以简化执行我的功能。

我想从当前行的同一索引中减去前一行的索引(entries[2])。我看到两种完成此方法的方法:

当前行entries[2] - 上一行entries[2]

当前行Elapsed Time - 上一行Elapsed Time

示例原始数据:

1 c    4977321 200 200 007 003 033 001 002 003 092 001 
2 d    4977789 010 120 100 100 
3 e    4977816 175 194 000 
4 f    4977868 225 220 100 300 001

这里,索引2是时间(即4977321)

我的代码如下:

f = input('Type in File Name: ')  # What Raw Data log do we want to analyze?


def function():
    print_string = ''
    # do something with the data
    print_string += 'Time Delta: ' + str(delta_time)
    if 'Time Delta' in print_string:
        print(print_string)


initial_time = None  # Establishes 0 start point for time (not all captures start at 0ms)
with open(f, "r") as f:
    for line in f:
        entries = line.split()  # Organizes data line as a list, entries as indices
        column = [int(v) for v in entries[3:]]  
        delta_time = int(entries[2]) - time
        time = int(entries[2])  # Time expressed in milliseconds
        if initial_time is None:
            initial_time = time
            delta_time = 0
        elap_time = time - initial_time  # Expressed as elapsed time from start of capture in milliseconds
        function()

f.close()

我遗漏了我的代码主体(完全是函数),因为我没有看到它是必要的信息。

我希望代码确定delta_time的值,因此可以在执行函数后打印。我希望输出看起来像:

Time Delta: #  (nothing here, no previous line)
Time Delta: #  4977789 - 4977321
Time Delta: #  4977816 - 4977789 
Time Delta: #  4977868 - 4977816 

仅供参考,我在打印时也在我的功能中使用了elap_time,但这里没有包含它。

1 个答案:

答案 0 :(得分:1)

使用某个默认值

在循环之前声明时间
time = 0

然后,将delta_time行与时间反转并执行:

delta_time = int(entries[2]) - time 
time = int(entries[2])