我正在研究如下的数据框,我想将每个连续部分与其他部分分开。这意味着,每个零点差异都会分开。将与最后一个同名的非零项目分组。结果应该是:group1:('E', (1,2,3))
;第2组:('E',(4,5))
; group3:('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|
+----+----+------------+
答案 0 :(得分:0)
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]}}