Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧中的按条件分组_Python_Pandas_Dataframe - Fatal编程技术网

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
然后使用听写理解,如果你指定了有用的年龄范围