使用groupby和head(有条件的)

时间:2017-12-26 23:27:19

标签: python pandas dataframe

我想使用pandas groupby过滤此数据框并有条件地进行处理。这是一个示例DataFrame

df = pd.DataFrame([['Yes', 2], ['Yes', 4], ['Yes', 6], ['No', 8], ['No', 5],
                   ['No', 6], ['No', 3], ['Maybe', 10], ['Maybe', 2],
                   ['Maybe', 7]], columns=['A', 'B'])

过滤行的数量可变,但始终应为偶数(每个组的最大偶数行数)。 这应该是结果DataFrame

  A      B
0 Yes    2
1 Yes    4
2 No     8
3 No     5
4 No     6
5 No     3
6 Maybe  10
7 Maybe  2

我不知道如何正确使用df.groupby.head()。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用floor

df.groupby('A').B.apply(lambda x : x.iloc[:int(np.floor(len(x)/2)*2)]).reset_index().sort_values('level_1').drop('level_1',1)
Out[1458]: 
       A   B
6    Yes   2
7    Yes   4
2     No   8
3     No   5
4     No   6
5     No   3
0  Maybe  10
1  Maybe   2