数据帧:具有不连续列的组



我正在处理如下所示的数据帧,我想将每个连续部分与其他部分分开。这意味着,每个零"diff"都将与同名的最后一个非零项分组。结果应为:组 1:('E', (1,2,3)) ;第2组: ('E',(4,5)) ;第3组:('C',(1,2))

我该怎么做?多谢!

+----+----+------------+
|name|diff|num_in_group|
+----+----+------------+
|   E|null|           1|
|   E|   0|           2|
|   E|   0|           3|
|   E|  40|           4|
|   E|   0|           5|
|   C|null|           1|
|   C|   0|           2|
+----+----+------------+
dic_group = {}
new_group = True
counter = 0
for index in df.index:
    if new_group == False:
        if df.loc[index, 'diff'] == 0: 
            dic_group[ref_name]['numbers_in_group'].append(df.loc[index, 'num_in_group'])
        else:
            new_group = True
    if new_group:
        counter = counter + 1
        ref_name = 'group%d' %counter
        dic_group[ref_name]={}
        dic_group[ref_name]['name'] = df.loc[index, 'name']
        dic_group[ref_name]['numbers_in_group'] = []
        dic_group[ref_name]['numbers_in_group'].append(df.loc[index, 'num_in_group'])
        new_group = False

输出:

{'group1': {'name': 'E', 'numbers_in_group': [1, 2, 3]},
 'group2': {'name': 'E', 'numbers_in_group': [4, 5]},
 'group3': {'name': 'C', 'numbers_in_group': [1, 2]}}

相关内容

  • 没有找到相关文章

最新更新