我有一个要分组的数据集,然后尝试删除在特定列中没有数据的任何组。例如:
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
。这有点骇人听闻,所以我也尝试过
g.filter(lambda group: group.isnull().all())
这看起来更像 Pythonic,但它给了我一个错误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。