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