【发布时间】:2018-03-06 06:38:15
【问题描述】:
我有一个包含许多列的 Panda 数据框 (df)。为简单起见,我在此处发布了三列包含虚拟数据的列。
Timestamp Source Length
0 1 5
1 1 5
2 1 5
3 2 5
4 2 5
5 3 5
6 1 5
7 3 5
8 2 5
9 1 5
使用 Panda 函数,首先我将时间戳设置为 df 的索引。
index = pd.DatetimeIndex(data[data.columns[1]]*10**9) # Convert timestamp
df = df.set_index(index) # Set Timestamp as index
接下来我可以使用 groupby 和 pd.TimeGrouper 函数将数据分组到 5 秒的 bin 中,并计算每个 bin 的累积长度,如下所示:
df_length = data[data.columns[5]].groupby(pd.TimeGrouper('5S')).sum()
所以 df_length 数据框应该如下所示:
Timestamp Length
0 25
5 25
现在的问题是:“我想获得相同的 5 秒箱,但 ant 以下列格式在单独的列中计算每个源(1,2 和 3)的累积长度:
Timestamp 1 2 3
0 15 10 0
5 10 5 10
我想我可以在某些条件下使用 df.groupby 来获得它。但是现在又迷茫又累了:(
欣赏仅使用 panda 函数的解决方案。
【问题讨论】:
-
您的“虚拟数据”没有 5 列,因此您的
df_length函数将不起作用