【发布时间】:2017-12-29 07:27:32
【问题描述】:
我正在尝试计算两个带时间戳的值:
例如:
time letter
1 A
4 B
5 C
9 C
18 B
30 A
30 B
我正在划分时间窗口:1+ 30 / 30 那么我想知道每个大小为 1 的时间窗口中有多少 A B C
timeseries A B C
1 1 0 0
2 0 0 0
...
30 1 1 0
这应该给我一个 30 行 3 列的表格:A B C of ocurancess
问题是数据需要很长时间才能分解,因为它每次都遍历所有主表以对数据进行切片,即使数据已经排序
master = mytable
minimum = master.timestamp.min()
maximum = master.timestamp.max()
window = (minimum + maximum) / maximum
wstart = minimum
wend = minimum + window
concurrent_tasks = []
while ( wstart <= maximum ):
As = 0
Bs = 0
Cs = 0
for d, row in master.iterrows():
ttime = row.timestamp
if ((ttime >= wstart) & (ttime < wend)):
#print (row.channel)
if (row.channel == 'A'):
As = As + 1
elif (row.channel == 'B'):
Bs = Bs + 1
elif (row.channel == 'C'):
Cs = Cs + 1
concurrent_tasks.append([m_id, As, Bs, Cs])
wstart = wstart + window
wend = wend + window
您能帮我提高性能吗?我想使用map函数,我想防止python每次循环遍历所有循环。
这是大数据的一部分,需要几天时间才能完成?
谢谢
【问题讨论】:
标签: python-2.7 pandas dataframe time-series