簡體   English   中英

從熊貓數據框中提取群體觀察結果

[英]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_valuesgroupbyhead

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM