【问题标题】:How can get groups for which all rows contain a certain pattern with pandas如何使用熊猫获取所有行都包含特定模式的组
【发布时间】:2022-01-01 09:08:53
【问题描述】:

示例 csv 文件:

    myId    tags
0   id_1    \N
1   id_1    \N
2   id_1    \N
3   id_1    \N
4   id_2    "[""tag1""]"
5   id_2    "[""tag1""]"
6   id_2    "[""tag0"",""tag1""]"
7   id_3    \N
8   id_3    \N
9   id_3    "[""tag1""]"
10  id_3    \N

由此,我只想用熊猫返回 id_2。但我为什么要它?因为只有那个 id 在其所有成员中都有“tag1”。所以这就是我无法弄清楚如何查询的事情。 我想返回在其成员的 all 中具有 tag1 的 id。例如,我不想要 id_3,因为 4 个成员中只有 1 个有 tag1 标签,我也不想要 id_1,因为它的成员都没有 tag1。另一方面,id_2 的所有成员在其标签列表中都有一个 tag1。

有人可以帮助如何用熊猫查询这个吗?这只是一个小例子,我想知道如何做这样的事情。

提前致谢。

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    您可以计算一个掩码来检查all 每组的条目是否包含该模式,然后切片:

    mask = df['tags'].str.contains('tag1').groupby(df['myId']).transform('all')
    
    df[mask]
    

    输出:

       myId                   tags
    4  id_2           "[""tag1""]"
    5  id_2           "[""tag1""]"
    6  id_2  "[""tag0"",""tag1""]"
    

    【讨论】:

    • 非常感谢。这正是我想要学习的。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2018-09-14
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    相关资源
    最近更新 更多