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')?
实际上,您需要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'列