groupby和过滤熊猫

nov*_*her 2 python dataframe python-2.7 pandas pandas-groupby

DF:

    make    country other_columns   sale
honda   tokyo   data    1
honda   hirosima    data    0
toyota  tokyo   data    1
toyota  hirosima    data    0
suzuki  tokyo   data    0
suzuki  hirosima    data    0
ferrari tokyo   data    1
ferrari hirosima    data    0
nissan  tokyo   data    1
nissan  hirosima    data    0
Run Code Online (Sandbox Code Playgroud)

条件:保持对1,0

期望的输出

make    country other_columns   sale
honda   tokyo   data    1
honda   hirosima    data    0
toyota  tokyo   data    1
toyota  hirosima    data    0
ferrari tokyo   data    1
ferrari hirosima    data    0
nissan  tokyo   data    1
nissan  hirosima    data    0
Run Code Online (Sandbox Code Playgroud)

我尝试了什么(显然不起作用)

outdf = df.groupby('sale').filter(lambda x: x > 0)
Run Code Online (Sandbox Code Playgroud)

我应该将两个列分组('sale'和'make')?

Ben*_*n.T 5

实际上,您需要groupby在"make"栏中使用filter,您可以使用创建tuple"销售"列的功能:

outdf = df.groupby('make').filter(lambda x: tuple(x.sale)== (1,0))
Run Code Online (Sandbox Code Playgroud)

并得到预期的输出:

      make   country other_columns  sale
0    honda     tokyo          data     1
1    honda  hirosima          data     0
2   toyota     tokyo          data     1
3   toyota  hirosima          data     0
6  ferrari     tokyo          data     1
7  ferrari  hirosima          data     0
8   nissan     tokyo          data     1
9   nissan  hirosima          data     0
Run Code Online (Sandbox Code Playgroud)

如果1和0之间的订单并不总是满足同一'make',您可以先使用sort_valueson'sale'列