我有一个包含许多日期的txt文件,每个日期都代表一个事件:
15MAR18 103000
15MAR18 120518
17MAR18 121203
17MAR18 134443
17MAR18 151733
19MAR18 165013
19MAR18 182253
19MAR18 195533
我试图了解在24小时内发生了多少'事件'。
我可以读取文件并解析为datetime对象ok:
for line in range(0, len(event_list):
eventTime = event_list[line][:14]
eventTime = datetime.strptime(eventTime, '%d%b%y %H%M%S')
eventTime_next = event_list[line+1][:14]
eventTime_next = datetime.strptime(next, '%d%b%y %H%M%S')
我不知道接下来会怎么做。
我试图将前面的线与之前的线进行比较,但我认为这不是解决问题的方法。
我需要它以便发生以下情况
15MAR18 103000 1
15MAR18 120518 2
17MAR18 121203 1
17MAR18 134443 2
17MAR18 151733 3
19MAR18 165013 1
19MAR18 182253 2
19MAR18 195533 3
I.e因此,自第一次比较开始经过24小时后,计数将回到1 ...然后再次使用新的开始参考开始。
我希望这有道理吗?
或者这是pandas图书馆的东西吗?
答案 0 :(得分:0)
如果您有pandas
的访问权限,则pd.Series.cumcount
是单向的。此方法仅使用Date
来提取运行总计。
我不确定你是否还需要考虑时间。
import pandas as pd
from io import StringIO
mystr = StringIO("""15MAR18 103000
15MAR18 120518
17MAR18 121203
17MAR18 134443
17MAR18 151733
19MAR18 165013
19MAR18 182253
19MAR18 195533""")
# replace mystr with 'file.csv' below
df = pd.read_csv(mystr, header=None, names=['Date', 'Time'], delim_whitespace=True)
df['RunningTotal'] = df.groupby('Date').cumcount() + 1
# Date Time RunningTotal
# 0 15MAR18 103000 1
# 1 15MAR18 120518 2
# 2 17MAR18 121203 1
# 3 17MAR18 134443 2
# 4 17MAR18 151733 3
# 5 19MAR18 165013 1
# 6 19MAR18 182253 2
# 7 19MAR18 195533 3
答案 1 :(得分:0)
我同意jpj建议的内容。 如果你想使用核心,你可以尝试这样: -
data = '''15MAR18 103000
15MAR18 120518
17MAR18 121203
17MAR18 134443
17MAR18 151733
19MAR18 165013
19MAR18 182253
19MAR18 195533
'''
data_list = data.split('\n')
date_list = []
for data_line in data_list:
data_date = data_line.split(' ')[0].strip()
if data_date != '':
if len(date_list)>0:
count = 1
for dict1 in date_list:
if data_date in dict1['line'].strip():
count += 1
else:
count = 1
date_list.append({'line':data_line.strip(), 'count':str(count)})
for data in date_list:
print(data['line'] +' ' + data['count'])
输出将显示如下:
15MAR18 103000 1
15MAR18 120518 2
17MAR18 121203 1
17MAR18 134443 2
17MAR18 151733 3
19MAR18 165013 1
19MAR18 182253 2
19MAR18 195533 3
一切顺利......快乐的编码:)