我有这个数据框:
MAT MAT_IN SER D8
0 X A1 Yes -
1 X A2 No X
2 X A3 No X
3 X A4 Yes X
4 Y B1 No -
5 Y B2 No -
6 Y B3 No -
7 Y B4 No -
8 Y B5 No -
9 Z K1 Yes -
10 Z K2 No -
11 Z K3 No X
12 Z K4 Yes X
我要在其中创建过滤器的地方,所以只得到第一行。过滤器具有以下条件:
如何在数据框中应用此类过滤器?
我的代码:
import pandas as pd
data = {'MAT':['X','X','X','X','Y','Y','Y','Y','Y','Z','Z','Z','Z'],
'MAT_IN':['A1','A2','A3','A4','B1','B2','B3','B4','B5','K1','K2','K3','K4'],
'SER':['Yes','No','No','Yes','No','No','No','No','No','Yes','No','No','Yes'],
'D8':['-','X','X','X','-','-','-','-','-','-','-','X','X']}
df1=pd.DataFrame(data, columns=['MAT','MAT_IN','SER','D8'])
df1
任何预期结果在D99列中:
MAT MAT_IN SER D8 D99
0 X A1 Yes - X
1 X A2 No X -
2 X A3 No X -
3 X A4 Yes X -
4 Y B1 No - -
5 Y B2 No - -
6 Y B3 No - -
7 Y B4 No - -
8 Y B5 No - -
9 Z K1 Yes - -
10 Z K2 No - -
11 Z K3 No X -
12 Z K4 Yes X -
答案 0 :(得分:0)
通过方法Series.duplicated
的倒置掩码为按位&
的{{1}}创建组掩码,以比较相等的组链接的第一个值,并为最后删除先链接最后一个掩码AND
每组按mask2
行,按duplicated
比较并按DataFrameGroupBy.all
测试每组是否所有X
都没有第一个,对于具有与原始添加Series.map
:
X