Pandas 查找事件的发生情况
我有一个包含五个不同事件的数组,每个事件在不同的时间间隔内发生不止一次 例:Pandas 查找事件的发生情况,pandas,Pandas,我有一个包含五个不同事件的数组,每个事件在不同的时间间隔内发生不止一次 例: 以下是使用和的潜在方法: 然后,您可以进行进一步的分组操作,以获得所需的结果: s_out = s_out.groupby(level=1, sort=False).apply(np.array) [外] 我将您的活动列表作为一个简单的Python列表: 然后执行以下步骤: 导入itertools(不久将需要) 从act创建数据帧: 向辅助数据帧生成数据: rows = [] for k, g in itertoo
以下是使用和的潜在方法: 然后,您可以进行进一步的分组操作,以获得所需的结果:
s_out = s_out.groupby(level=1, sort=False).apply(np.array)
[外]
我将您的活动列表作为一个简单的Python列表: 然后执行以下步骤:
导入itertools
(不久将需要)rows = []
for k, g in itertools.groupby(df.itertuples(name='row'), lambda row: row.activity):
grp = list(g)
rows.append([(grp[0].Index, grp[-1].Index), k])
df2 = pd.DataFrame(rows, columns=['id', 'activity'])
请注意,itertools.groupby与groupby的不同之处在于
详细信息:源元素键中的每个更改都会打开一个新组
因此,结果是:
[[(0, 3), 'walking'],
[(4, 7), 'running'],
[(8, 12), 'walking'],
[(13, 15), 'standing'],
[(16, 18), 'walking']]
activity
running [(4, 7)]
standing [(13, 15)]
walking [(0, 3), (8, 12), (16, 18)]
Name: id, dtype: object
rows = []
for k, g in itertools.groupby(df.itertuples(name='row'), lambda row: row.activity):
grp = list(g)
rows.append([(grp[0].Index, grp[-1].Index), k])
df2 = pd.DataFrame(rows, columns=['id', 'activity'])
df2.groupby('activity').id.agg(list)
[[(0, 3), 'walking'],
[(4, 7), 'running'],
[(8, 12), 'walking'],
[(13, 15), 'standing'],
[(16, 18), 'walking']]
activity
running [(4, 7)]
standing [(13, 15)]
walking [(0, 3), (8, 12), (16, 18)]
Name: id, dtype: object
例如,对于walking-一个元组列表,就像你想要的一样。现在我得到了他真正想要的,在这种情况下,我的解决方案完全不同,谢谢
df2.groupby('activity').id.agg(list)
activity
running [(4, 7)]
standing [(13, 15)]
walking [(0, 3), (8, 12), (16, 18)]
Name: id, dtype: object