从每个块中随机选择n行-pandas DataFrame

时间:2018-12-21 21:01:59

标签: python pandas dataframe subset

假设我有一个名为 df 的熊猫DataFrame,看起来像这样

father_name   child_name
Robert        Julian
Robert        Emily
Robert        Dan
Carl          Jack
Carl          Rose
John          Lucy
John          Mark
John          Alysha
Paul          Christopher
Paul          Thomas
Robert        Kevin
Carl          Elisabeth

我可以确定每个父亲至少有 2个孩子。

我想获得一个DataFrame,其中每个父亲都有正好个孩子,并且随机选择了这两个孩子。输出示例为

father_name   child_name
Robert        Emily
Robert        Kevin
Carl          Jack
Carl          Elisabeth
John          Alysha
John          Mark
Paul          Thomas
Paul          Christopher

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以对分组的数据应用DataFrame.sample。它使用参数n,您可以将其设置为2

df.groupby('father_name').child_name.apply(lambda x: x.sample(n=2))\
.reset_index(1, drop = True).reset_index()


father_name child_name
0   Carl    Elisabeth
1   Carl    Jack
2   John    Mark
3   John    Lucy
4   Paul    Thomas
5   Paul    Christopher
6   Robert  Emily
7   Robert  Julian