[英]Extracting group observations from pandas dataframe
我有一個熊貓數據框。 我想從數據框的每個子組中提取一定數量的觀察值,然后將它們放入新的數據框中。 例如,假設我們具有以下數據框:
Var1 Var2
0 1 1.2
1 2 1.3
2 2 1.4
3 1 1.5
4 1 1.6
5 2 1.7
6 1 1.8
7 1 1.9
8 2 2.0
9 1 2.1
10 2 2.2
11 1 2.3
我想先按var1對其進行排序:
Var1 Var2
0 1 1.2
1 1 1.5
2 1 1.6
3 1 1.8
4 1 1.9
5 1 2.1
6 1 2.3
7 2 1.3
8 2 1.4
9 2 1.7
10 2 2.0
11 2 2.2
然后保留每個組的前兩個觀察值,並將它們放入新的數據框中:
Var1 Var2
0 1 1.2
1 1 1.5
2 2 1.3
3 2 1.4
我知道如何使用分組依據,但是我不清楚如何執行第二步。 非常感謝你的幫助。
將sort_values
與groupby
和head
:
df = df.sort_values('Var1').groupby('Var1').head(2).reset_index(drop=True)
print (df)
Var1 Var2
0 1 1.2
1 1 1.5
2 2 1.3
3 2 1.4
df = df.groupby('Var1').head(2).sort_values('Var1').reset_index(drop=True)
print (df)
Var1 Var2
0 1 1.2
1 1 1.5
2 2 1.3
3 2 1.4
iloc
另一種解決方案:
df = df.groupby('Var1')['Var2']
.apply(lambda x: x.iloc[:2])
.reset_index(level=1, drop=True)
.reset_index()
print (df)
Var1 Var2
0 1 1.2
1 1 1.5
2 2 1.3
3 2 1.4
注意:
對於舊版本的熊貓, sort_values
更改為sort
,而是升級至最新版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.