假設我有以下由一些學生資訊組成的原始資料框:
STUDENT_ID SEMESTER COURSE_NAME
50694 21 X1
50694 21 X2
50285 21 X3
51442 21 X4
51600 21 X5
50285 21 X6
50494 21 X7
50494 21 X8
50802 21 X9
50802 21 X10
50802 21 X11
50285 21 X12
我想(1)將它們分組,STUDENT_ID以便每個學生的課程組合在一起,如下所示:
STUDENT_ID SEMESTER COURSE_NAME
50694 21 X1
50694 21 X2
50494 21 X7
50494 21 X8
50285 21 X3
50285 21 X6
50285 21 X12
50802 21 X9
50802 21 X10
50802 21 X11
51442 21 X4
51600 21 X5
并且(2)將它們按STUDENT_ID列中的特定值拆分,例如50802得到:
STUDENT_ID SEMESTER COURSE_NAME
50694 21 X1
50694 21 X2
50494 21 X7
50494 21 X8
50285 21 X3
50285 21 X6
50285 21 X12
和
STUDENT_ID SEMESTER COURSE_NAME
50802 21 X9
50802 21 X10
50802 21 X11
51442 21 X4
51600 21 X5
非常感謝任何幫助。
uj5u.com熱心網友回復:
第一步很簡單sort_values。對于第二個,條件尚不清楚,但您可以使用groupby:
dfs = [g for _,g in
(df
.sort_values(by='STUDENT_ID')
.groupby(df['STUDENT_ID'].lt(50802))
)]
輸出:
[ STUDENT_ID SEMESTER COURSE_NAME
8 50802 21 X9
9 50802 21 X10
10 50802 21 X11
3 51442 21 X4
4 51600 21 X5,
STUDENT_ID SEMESTER COURSE_NAME
2 50285 21 X3
5 50285 21 X6
11 50285 21 X12
6 50494 21 X7
7 50494 21 X8
0 50694 21 X1
1 50694 21 X2]
uj5u.com熱心網友回復:
用于df.sort_values對資料幀進行排序,然后用于np.split在指定索引處拆分資料幀:
df = df.sort_values('STUDENT_ID').reset_index(drop=True)
splits = np.split(df, [df['STUDENT_ID'].eq(50802).idxmax()])
輸出:
>>> splits
[ STUDENT_ID SEMESTER COURSE_NAME
0 50285 21 X3
1 50285 21 X6
2 50285 21 X12
3 50494 21 X7
4 50494 21 X8
5 50694 21 X1
6 50694 21 X2,
STUDENT_ID SEMESTER COURSE_NAME
7 50802 21 X9
8 50802 21 X10
9 50802 21 X11
10 51442 21 X4
11 51600 21 X5]
>>> splits[0]
STUDENT_ID SEMESTER COURSE_NAME
0 50285 21 X3
1 50285 21 X6
2 50285 21 X12
3 50494 21 X7
4 50494 21 X8
5 50694 21 X1
6 50694 21 X2
>>> splits[1]
STUDENT_ID SEMESTER COURSE_NAME
7 50802 21 X9
8 50802 21 X10
9 50802 21 X11
10 51442 21 X4
11 51600 21 X5
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442814.html
標籤:Python python-3.x 熊猫 数据框
上一篇:內部網路爬蟲庫
下一篇:聚合為最多包含兩個元素的串列
