Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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 pandas groupby-返回满足条件的组中的第一行_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python pandas groupby-返回满足条件的组中的第一行

Python pandas groupby-返回满足条件的组中的第一行,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,给定下面的示例数据集,我希望每个组返回一行,显示第一行的obsnum,分数小于0.4 import pandas as pd import numpy as np np.random.seed(42) df = pd.DataFrame({'group': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c'], 'obsnum': [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4], 'score' :

给定下面的示例数据集,我希望每个组返回一行,显示第一行的obsnum,分数小于0.4

import pandas as pd
import numpy as np

np.random.seed(42)

df = pd.DataFrame({'group': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c'],
'obsnum': [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4],
'score' : np.random.rand(12)})
数据帧如下所示:

df
  group obsnum  score
0   a     1   0.374540
1   a     2   0.950714
2   a     3   0.731994
3   a     4   0.598658
4   b     1   0.156019
5   b     2   0.155995
6   b     3   0.058084
7   b     4   0.866176
8   c     1   0.601115
9   c     2   0.708073
10  c     3   0.020584
11  c     4   0.969910
返回的结果应该是这样的,并存储在另一个数据帧中

group   obsnum  score
a         1     0.374540
b         1     0.156019
c         3     0.020584
我已经尝试了这个df.groupby'group'。applylambda x:x['score']您可以先使用或作为过滤器,然后:

您可以先将或用于过滤器,然后:

你可以用

df[df['score'].le(0.4)].groupby('group').first()

     obsnum     score
group                  
a           1  0.374540
b           1  0.156019
c           3  0.020584
你可以用

df[df['score'].le(0.4)].groupby('group').first()

     obsnum     score
group                  
a           1  0.374540
b           1  0.156019
c           3  0.020584

df[df['score'].le0.4].groupby'group',as_index=False.first?我将把这个留给OP先生。他可能需要索引。谢谢!我接受了另一个答案,只是因为它是第一个,并且做了我需要的。但这也很有帮助,@jezrael的评论也是如此。谢谢你的帮助。是的,不用担心。如果有帮助,至少别忘了投票。祝你一天过得愉快[df['score'].le0.4].groupby'group',因为_index=False.first?我将把这个留给OP先生。他可能需要索引。谢谢!我接受了另一个答案,只是因为它是第一个,并且做了我需要的。但这也很有帮助,@jezrael的评论也是如此。谢谢你的帮助。是的,不用担心。如果有帮助,至少别忘了投票。祝您今天过得愉快
print (df)
   group  obsnum     score
0      a       1  0.374540
4      b       1  0.156019
10     c       3  0.020584
df[df['score'].le(0.4)].groupby('group').first()

     obsnum     score
group                  
a           1  0.374540
b           1  0.156019
c           3  0.020584