我有一个数据集,我正在分组,然后尝试删除在特定列中没有数据的任何组。例如:过滤掉所有NaN列的组
df = pd.DataFrame{'movie': ['thg', 'thg', 'mol', 'mol', 'lob', 'lob'],
'rating': [3., 4., 5., np.nan, np.nan, np.nan],
'name': ['John', np.nan, 'Terry', 'Graham', 'Eric', np.nan]}
g = df.groupby('movie')
movie name rating
0 thg John 3
1 thg NaN 4
2 mol Terry 5
3 mol Graham NaN
4 lob Eric NaN
5 lob NaN NaN
我想从数据集中删除组lob
,因为没有人评分。我试过
mask = g['rating'].mean().isnull()
g.filter(~mask)
它给了我一个错误TypeError: 'Series' object is not callable
。这是一种hackish的,所以我也试着
g.filter(lambda group: group.isnull().all())
这似乎更Python,但它给我的ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
错误。我如何过滤出一个组,为什么我会得到这些错误?任何关于groupby
的其他信息通常也会有所帮助。我使用的是熊猫0.12.0,Python 2.7.5和Mac OS X 10.8.5。
编辑:不要介意不重复,但这可能会有所帮助。 http://stackoverflow.com/questions/13413590/how-to-drop-rows-of-pandas-dataframe-whose-value-of-certain-column-is-nan – Shashank