从大Pandas数据框架中提取群体观测数据

2024-04-26 13:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框。我想从数据帧的每个子组中提取一定数量的观察结果,并将它们放入新的数据帧中。例如,假设我们有以下数据帧:

         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

我知道如何使用group by,但我不清楚如何执行第二步。非常感谢你的帮助。你知道吗


Tags: 数据数量by排序groupvar1var2
1条回答
网友
1楼 · 发布于 2024-04-26 13:18:12

^{}groupby^{}一起使用:

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

注:

对于较旧版本的pandas,将sort_values更改为sort,而是升级到最新版本。你知道吗

相关问题 更多 >