我有一个数据帧,例如:

The_list=["A","B","D"]

Groups Values
G1     A
G1     B
G1     C
G1     D
G2     A
G2     B
G2     A
G2     D
G3     A
G3     D
G4     Z
G4     D
G4     E
G4     C
G5     A
G5     B
G5     D

我只想将Groups子集,其中Values个元素都在The_list中,并且没有其他元素在The_list中不存在的组中.

在这里,我应该只子集,然后:

Groups Values
G2     A
G2     B
G2     A
G2     D
G5     A
G5     B
G5     D

到目前为止,我try 了:

df.loc[df.Values.str.contains["A" & "B" & "D"].groupby(df.Groups)]

推荐答案

您可以在列Groups上使用pandas.groupby,然后使用集合the_list判断set组的每个值,并返回组具有真值的所有行:

The_list=["A","B","D"]
mask_rows = df.groupby('Groups')['Values'].transform(
    lambda x : set(x) == set(The_list)
)
print(df[mask_rows])

简短答案为Paul H,在分组后使用filter:

print(df.groupby("Groups").filter(lambda g: set(g["Values"]) == set(The_list)))

输出:

Groups Values
G2     A
G2     B
G2     A
G2     D
G5     A
G5     B
G5     D

Python相关问答推荐

Pandas .类型错误:只能将字符串(而不是int)连接到字符串

单击Cookie横幅错误并在Selenium中启用搜索栏

在for循环中保存和删除收件箱

如何从不同长度的HTML表格中抓取准确的字段?

云上Gunicorn的Flask-socketIO无法工作

使用Python进行网页抓取,没有页面

当测试字符串100%包含查询字符串时,为什么t fuzzywuzzy s Process.extractBests不给出100%分数?

Docker-compose:为不同项目创建相同的容器

机器人与Pyton Minecraft服务器状态不和

如何计算列表列行之间的公共元素

Chatgpt API不断返回错误:404未能从API获取响应

对Numpy函数进行载体化

acme错误-Veritas错误:模块收件箱没有属性linear_util'

Odoo 16使用NTFS使字段只读

如何在UserSerializer中添加显式字段?

启用/禁用shiny 的自动重新加载

合并帧,但不按合并键排序

如何从列表框中 Select 而不出错?

旋转多边形而不改变内部空间关系

手动设置seborn/matplotlib散点图连续变量图例中显示的值