Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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 选择所有年份都有观测值的行_Python_Pandas - Fatal编程技术网

Python 选择所有年份都有观测值的行

Python 选择所有年份都有观测值的行,python,pandas,Python,Pandas,我有一个大学学生的数据集,我想保留那些没有退学的学生的观察结果,也就是说,所有的学生都有多年的观察结果 例如: Name Year Jacop 2010 Jacop 2011 Jacop 2012 Jacop 2013 Nina 2008 Nina 2009 Nina 2010 我需要像按名称计算值这样的东西,如果它小于4,则删除。怎么做?我想您需要: 另一个解决方案包括和: 我能问你们一个

我有一个大学学生的数据集,我想保留那些没有退学的学生的观察结果,也就是说,所有的学生都有多年的观察结果 例如:

Name        Year
Jacop       2010
Jacop       2011
Jacop       2012
Jacop       2013
Nina        2008
Nina        2009
Nina        2010
我需要像按名称计算值这样的东西,如果它小于4,则删除。怎么做?

我想您需要:

另一个解决方案包括和:


我能问你们一个问题吗,若对尼娜还有4个观测值,但实际上其中一个是空的,我还是在摆脱尼娜?我认为输出是一样的。但是,如果名字的第4行是Nina,并且年份=NaN,则不需要对其进行计数,则使用
df=df[df.groupby('name')['Year'].transform('count')>=4]
df=df.groupby('name').filter(lambda x:x['Year'].count()>=4)
可以使用
df=pd.DataFrame('Year':[2010.0、2011.0、2012.0、2013.0、np.nan、2008.0、2009.0、2010.0],“名称”:[“杰科普”、“杰科普”、“杰科普”、“杰科普”、“尼娜”、“尼娜”、“尼娜”、“尼娜”]})
df = df.groupby('Name').filter(lambda x: len(x) >= 4)
print (df)
    Name  Year
0  Jacop  2010
1  Jacop  2011
2  Jacop  2012
3  Jacop  2013
df = df[df.groupby('Name')['Name'].transform('size') >= 4]
print (df)
    Name  Year
0  Jacop  2010
1  Jacop  2011
2  Jacop  2012
3  Jacop  2013