我是一个Python(和整个编程)新手。我已经看到了数百个关于此的问题,但都使用pandas
包进行数据分析。我已经有几百行未使用pandas
的代码,所以我想尽可能避免使用pandas
,或者如果我可以使用pandas
重构我的数据,我愿意接受建议。
我将数千行原始数据作为entries
列入列表。我使用column
从entries
创建另一个列表,以简化执行我的功能。
我想从当前行的同一索引中减去前一行的索引(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
,但这里没有包含它。
答案 0 :(得分:1)
使用某个默认值
在循环之前声明时间time = 0
然后,将delta_time行与时间反转并执行:
delta_time = int(entries[2]) - time
time = int(entries[2])