Python 数据帧中的按条件分组
我想把这些数据分成几个组。 我有一些数据如下:Python 数据帧中的按条件分组,python,pandas,dataframe,Python,Pandas,Dataframe,我想把这些数据分成几个组。 我有一些数据如下: 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') 排序后: Index Age Predict 5 17 0 0
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')
排序后:
Index Age Predict
5 17 0
0 23 0
6 29 1
1 39 0
3 41 1
2 70 0
4 50 0
如何将数据分类到组中:
Index Age Predict
group 1:
5 17 0
0 23 0
group 2:
6 29 1
group 3:
1 39 0
group 4:
3 41 1
group 5:
2 70 0
4 50 0
谢谢您的帮助。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
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
基本上检查当前值是否与以前的值不同,如果不是增量。这将允许您根据Predict值的变化进行分组
基本上检查当前值是否与以前的值不同,如果不是增量。这将允许您使用
.grouby
和.cumsum()
结果:
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
使用
.grouby
和.cumsum()
结果:
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
你需要
pd.cut
然后使用听写理解,如果你指定了有用的年龄范围,你需要pd.cut
然后使用听写理解,如果你指定了有用的年龄范围