我正在处理如下所示的数据帧,我想将每个连续部分与其他部分分开。这意味着,每个零"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]}}