我想将continue数据分成几组。 我有一些像这样的数据:
is-invalid
我尝试:
{{ form.email(class="form-control form-control-lg" ~ (" is-invalid" if form.email.errors else "")) }}
{% if form.email.errors %}
<div class="invalid-feedback">
{% for error in form.email.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}
排序后:
Index Age Predict
0 23 0
1 39 0
2 70 0
3 41 1
4 50 0
5 17 0
6 29 1
我该怎么做才能将数据分类到组中
df_1 = df[['Age','Predict']]
data = df_1.sort_values(by='Age')
感谢帮助。
答案 0 :(得分:1)
IIUC,所需的组是从Predict创建的,其中以下各行之间的diff
不等于0。因此您可以创建一列:
data_ = df.sort_values('Age')
data_['gr'] = data_['Predict'].diff().ne(0).cumsum()
print (data_)
Index Age Predict gr
5 5 17 0 1
0 0 23 0 1
6 6 29 1 2
1 1 39 0 3
3 3 41 1 4
4 4 50 0 5
2 2 70 0 5
或者,如果您想拆分数据而不创建组列,一种方法是创建一个包含每个组的字典
data_ = df.sort_values('Age')
d = {i: dfg
for i,(_, dfg) in enumerate(data_.groupby(data_['Predict'].diff().ne(0).cumsum()),1)}
print (d[1])
Index Age Predict
5 5 17 0
0 0 23 0
答案 1 :(得分:1)
df.groupby((df['Predict'] != df['Predict'].shift(1)).cumsum())
基本上检查当前值是否与先前的值不同,如果不是,则增加。这将使您可以根据预测值的变化进行分组
答案 2 :(得分:1)
使用.grouby
和.cumsum()
for i, grp in data.groupby([(data['Predict'] != data['Predict'].shift()).cumsum()]):
print('group', i)
print(grp)
结果:
group 1
Age Predict
5 17 0
0 23 0
group 2
Age Predict
6 29 1
group 3
Age Predict
1 39 0
group 4
Age Predict
3 41 1
group 5
Age Predict
4 50 0
2 70 0