Python 数据帧上的条件选择

Python 数据帧上的条件选择,python,pandas,Python,Pandas,我有给定形式的数据集 time color height weight value 1 t1 red hr1 wr1 vr1 2 t1 red hr1 wr1 vr1 3 t1 blue hb1 wb1 vb1 4 t1 blue hb1 wb1 vb1 5 t1 green hg1 wg1 vg1 6 t1 gr

我有给定形式的数据集

   time    color height weight value
1  t1      red    hr1     wr1     vr1
2  t1      red    hr1     wr1     vr1
3  t1      blue   hb1     wb1    vb1
4  t1      blue   hb1     wb1     vb1
5  t1      green  hg1     wg1     vg1
6  t1      green  hg1     wg1     vg1
7  t2      blue   hb2     wb2     vb2
8  t2      green  hg2     wg2    vg2
9  t2      red    hr2     wr2     vr2
10 t2      red    hr2     wr2     vr2
11 t3      red    hr3     wr3     vr3
12 t3      red    hr3     wr3     vr3
13 t3      green  hg3     wg3     vg3
14 t3      green  hg3     wg3     vg3
15 t3      blue   hb3     wb3     vb3
16 t3      blue   hb3     wb3     vb3
我想放弃时间的测量,在这里,颜色没有相同的计数值2,每个红色,蓝色和绿色。 在给定的代码段中,t1和t3应该保留,t3测量的所有行都应该删除

结果应该是:

 time   color height weight value
1  t1      red    hr1     wr1     vr1
2  t1      red    hr1     wr1     vr1
3  t1      blue   hb1     wb1    vb1
4  t1      blue   hb1     wb1     vb1
5  t1      green  hg1     wg1     vg1
6  t1      green  hg1     wg1     vg1
7  t3      red    hr3     wr3     vr3
8  t3      red    hr3     wr3     vr3
9  t3      green  hg3     wg3     vg3
10 t3      green  hg3     wg3     vg3
11  t3     blue   hb3     wb3     vb3
12  t3     blue   hb3     wb3     vb3
谢谢,

对于与原始数据帧大小相同的返回序列,请使用double,以便可能使用:

那么:

s = df.groupby(['time', 'color']).size()
s = s.unstack(0).eq(2).all()
valid_times = s.index[s]

print(df[df.time.isin(valid_times)])

   time  color height weight value
1    t1    red    hr1    wr1   vr1
2    t1    red    hr1    wr1   vr1
3    t1   blue    hb1    wb1   vb1
4    t1   blue    hb1    wb1   vb1
5    t1  green    hg1    wg1   vg1
6    t1  green    hg1    wg1   vg1
11   t3    red    hr3    wr3   vr3
12   t3    red    hr3    wr3   vr3
13   t3  green    hg3    wg3   vg3
14   t3  green    hg3    wg3   vg3
15   t3   blue    hb3    wb3   vb3
16   t3   blue    hb3    wb3   vb3

不要窃取别人的答案。您在Chris A回答后编辑了此答案,使用了相同的4行代码。@TheFish-OK,更好?@TheFish-Ya,它很相似,所以删除了第一个解决方案。还有一件事,谢谢你的评论,如果你觉得我的答案太相似,以后再告诉我;)
s = df.groupby(['time', 'color']).size()
s = s.unstack(0).eq(2).all()
valid_times = s.index[s]

print(df[df.time.isin(valid_times)])

   time  color height weight value
1    t1    red    hr1    wr1   vr1
2    t1    red    hr1    wr1   vr1
3    t1   blue    hb1    wb1   vb1
4    t1   blue    hb1    wb1   vb1
5    t1  green    hg1    wg1   vg1
6    t1  green    hg1    wg1   vg1
11   t3    red    hr3    wr3   vr3
12   t3    red    hr3    wr3   vr3
13   t3  green    hg3    wg3   vg3
14   t3  green    hg3    wg3   vg3
15   t3   blue    hb3    wb3   vb3
16   t3   blue    hb3    wb3   vb3