我有2个数据帧, struct 如下:
df1
Group1 Group2 Label
G1 A1 AA
G1 A1 BB
G1 A1 CC
G1 A2 AA
G1 A2 CC
G2 A1 BB
G2 A1 DD
G2 A2 AA
G2 A2 CC
G2 A2 DD
G2 A2 BB
df2
ID Label_ref
1 AA
2 BB
4 CC
5 DD
7 EE
我想根据Group1
和Group2
列对df1
进行分组,并判断‘Label’列是否按ID
的顺序包含df2
Label_ref
中的值.
df1
上的Label
不需要具有df2
上Label_ref
的所有值,但df1
上的值Label
不能跳过ID
顺序中的任何Label_ref
值
预期输出:
组Group1=G1
,Group2=A1
不跳过AA
-CC
之间的任何值.因此,将标记与该组对应的行.
组Group1=G1
、Group2=A2
跳过BB
的值,但具有值CC
.因此,不会标记与该组对应的行.
组Group1=G2
,Group2=A2
不跳过AA
-DD
中的任何值,尽管它们没有按顺序排列.因此,将标记与该组对应的行.
Group1 Group2 Label Flag
G1 A1 AA 1
G1 A1 BB 1
G1 A1 CC 1
G1 A2 AA 0
G1 A2 CC 0
G2 A1 BB 0
G2 A1 DD 0
G2 A2 AA 1
G2 A2 CC 1
G2 A2 DD 1
G2 A2 BB 1
我一直没能取得多大进展:
import pandas as pd
df1 = pd.DataFrame({
'Group1': [ 'G1','G1', 'G1','G1','G1',
'G2','G2', 'G2','G2','G2','G2'],
'Group2': ['A1','A1','A1','A2','A2',
'A1','A1','A2','A2','A2','A2'],
'Label': ['AA','BB','CC','AA','CC','BB',
'DD','AA','CC','DD','BB']})
df2 = pd.DataFrame({
'ID': [ 1, 2, 4, 5, 7],
'Label_ref': ['AA','BB','CC','DD','EE']})
如果链接到我可以用来实现这一点的解决方案或函数/方法,则不胜感激