pandas :根据特定条件创建新框架的最佳方法 [英] Pandas: The best way to create new Frame by specific criteria

查看:76
本文介绍了 pandas :根据特定条件创建新框架的最佳方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个DataFrame:

I have a DataFrame:

df = pd.DataFrame({'id':[1,1,1,1,2,2,2,3,3,3,4,4],
              'sex': [0,0,0,1,0,0,0,1,1,0,1,1]})
    id  sex
0   1   0
1   1   0
2   1   0
3   1   1
4   2   0
5   2   0
6   2   0
7   3   1
8   3   1
9   3   0
10  4   1
11  4   1

我想获取新的DateFrame,其中两个性别值都只有id. 所以我想得到这样的东西.

I want to get new DateFrame where there are only id's with both sex values. So I want to get something like this.

    id  sex
0   1   0
1   1   0
2   1   0
3   1   1
4   3   1
5   3   1
6   3   0

推荐答案

在必要条件下使用groupbyfilter

In [2952]: df.groupby('id').filter(lambda x: set(x.sex) == set([0,1]))
Out[2952]:
   id  sex
0   1    0
1   1    0
2   1    0
3   1    1
7   3    1
8   3    1
9   3    0

In [2953]: df.groupby('id').filter(lambda x: all([any(x.sex == v) for v in [0,1]]))
Out[2953]:
   id  sex
0   1    0
1   1    0
2   1    0
3   1    1
7   3    1
8   3    1
9   3    0

这篇关于 pandas :根据特定条件创建新框架的最佳方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆