pandas dataframe group by下一次出现的列值

问题描述 投票:1回答:1

以下是我的数据框

     info        date       time      file            msg
0   INFO:  2018-09-12  16:10:10:  view.py:          phone   
1   INFO:  2018-09-12  16:10:10:  view.py:         asdasd   
2   INFO:  2018-09-12  16:10:43:  view.py:  contact start   
3   INFO:  2018-09-12  16:10:43:  view.py:    contact end   
4   INFO:  2018-09-12  16:11:36:  view.py:      app start   
5   INFO:  2018-09-12  16:11:36:  view.py:     busy start   
6   INFO:  2018-09-12  16:12:08:  view.py:       busy end   
7   INFO:  2018-09-12  16:12:08:  view.py:    contact end   
8   INFO:  2018-09-12  16:12:08:  view.py:        app end
9   INFO:  2018-09-12  16:12:08:  view.py:          phone
7   INFO:  2018-09-12  16:12:08:  view.py:    contact end

我想根据msg列中的值将此数据帧拆分为多个数据帧。如果我想将“phone”拆分为值,我的数据框应该看起来像这样:

DF1:

     info        date       time      file            msg
0   INFO:  2018-09-12  16:10:10:  view.py:          phone   
1   INFO:  2018-09-12  16:10:10:  view.py:         asdasd   
2   INFO:  2018-09-12  16:10:43:  view.py:  contact start   
3   INFO:  2018-09-12  16:10:43:  view.py:    contact end   
4   INFO:  2018-09-12  16:11:36:  view.py:      app start   
5   INFO:  2018-09-12  16:11:36:  view.py:     busy start   
6   INFO:  2018-09-12  16:12:08:  view.py:       busy end   
7   INFO:  2018-09-12  16:12:08:  view.py:    contact end   
8   INFO:  2018-09-12  16:12:08:  view.py:        app end

DF2:

 info        date       time      file            msg
9   INFO:  2018-09-12  16:12:08:  view.py:          phone
7   INFO:  2018-09-12  16:12:08:  view.py:    contact end
python python-3.x pandas dataframe pandas-groupby
1个回答
0
投票

使用字典表示可变数量的相关变量。在这里你可以结合GroupBy + cumsum

d = dict(tuple(df.groupby(df['msg'].eq('phone').cumsum())))

然后通过qazxsw poi,qazxsw poi,...,qazxsw poi访问您的数据框。

结果:

d[1]
© www.soinside.com 2019 - 2024. All rights reserved.