Python和Pandas,查找包含值的行,目标列具有许多范围

亚历克斯S1

我有一个凌乱的数据框,我试图在其中“标记”该列中包含特定数字的ids行。此列中的值表示一个包含范围:例如,“第4行”包含以下数字:2409,2410,2411,2412,2413,2414,2377,2378,1478,1479,1480,1481,1482,1483, 1484
在“第0行”和“第1行”中,其中一组的范围向后(1931,1930,1929

例如,如果我想知道哪些行的集合包含“ 2340”和“ 1930”,我该怎么做?我认为需要循环,有时需要查询的不仅仅是两个数字。使用Python 3.8。

示例数据框

x = ['1331:1332,1552:1551,1931:1928,1965:1973,1831:1811,1927:1920',
     '1331:1332,1552:1551,1931:1929,180:178,1966:1973,1831:1811,1927:1920',
     '2340:2341,1142:1143,1594:1593,1597:1596,1310,1311',
     '2339:2341,1142:1143,1594:1593,1597:1596,1310:1318,1977:1974',
     '2409:2414,2377:2378,1478:1484',
     '2474:2476',
]
y = [6.48,7.02,7.02,6.55,5.99,6.39,]
df = pd.DataFrame(list(zip(x, y)), columns =['ids', 'val']) 
display(df)

在此处输入图片说明

所需的输出数据帧
在此处输入图片说明

Toukenize

我将编写一个执行2个步骤的函数:

  1. 给定包含ID范围的ids_string,将所有ID列为 ids_num_list
  2. 检查中是否query_id存在ids_num_list
def check_num_in_ids_string(ids_string, query_id):
    
    # Convert ids_string to ids_num_list
    ids_range_list = ids_string.split(',')
    ids_num_list = set()
    
    for ids_range in ids_range_list:
        
        if ':' in ids_range:
            lower, upper = sorted(ids_range.split(":"))
            num_list = list(range(int(lower), int(upper)+ 1))
            ids_num_list.update(num_list)
            
        else:
            ids_num_list.add(int(ids_range))
            
    # Check if query number is in the list
    
    if int(query_id) in ids_num_list:
        return 1
    
    else:
        return 0

# Example usage
query_id_list = ['2340', '1930']

for query_id in query_id_list:
    df[f'n{query_id}'] = (
        df['ids']
        .apply(lambda x : check_num_in_ids_string(x, query_id))
    )

这将返回您的要求:

    ids                                                 val     n2340   n1930
0   1331:1332,1552:1551,1931:1928,1965:1973,1831:1...   6.48    0       1
1   1331:1332,1552:1551,1931:1929,180:178,1966:197...   7.02    0       1
2   2340:2341,1142:1143,1594:1593,1597:1596,1310,1311   7.02    1       0
3   2339:2341,1142:1143,1594:1593,1597:1596,1310:1...   6.55    1       0
4   2409:2414,2377:2378,1478:1484                       5.99    0       0
5   2474:2476                                           6.39    0       0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找列中具有多个值的行

来自分类Dev

查找列中具有重复值的行

来自分类Dev

如何查找具有所有值的所有行又包含另一行的行

来自分类Dev

查找具有相同列值的连续行范围

来自分类Dev

如何链接包含相同产品但具有不同列和ID的许多表

来自分类Dev

构造具有许多不均匀的行和列的表-HTML

来自分类Dev

在特定列中查找具有共同值的行

来自分类Dev

查找另一列中具有相同值的行-Python

来自分类Dev

如何在Pandas DATAFRAME中查找具有特定数据类型的列值的行

来自分类Dev

查找和打印具有重复列值的行

来自分类Dev

递归查找包含目标键和值的嵌套字典

来自分类Dev

查找列中的空值范围-Pandas

来自分类Dev

如何在Python Pandas DataFrame中的任何行具有NaN值后删除列

来自分类Dev

熊猫在任何列中查找具有值的行

来自分类Dev

Python Pandas-具有许多列的数据集-想要遍历每列,仅从非null的字段将行值添加到新列表

来自分类Dev

搜索文件包含具有许多条件的行

来自分类Dev

查找列中具有重复值的行

来自分类Dev

查找具有相同列值的连续行范围

来自分类Dev

oracle sql查询在与列1和2匹配的第3列中查找具有多个值的行

来自分类Dev

查找具有特定值的列的行(matlab)

来自分类Dev

构造具有许多不均匀的行和列的表-HTML

来自分类Dev

Python Pandas:根据某些列比较数据框的行,并删除具有最低值的行

来自分类Dev

如何查找其中具有某些行值的列/表

来自分类Dev

具有固定行和动态列的复杂查找

来自分类Dev

在python中查找具有唯一列值的行

来自分类Dev

在不同的列中查找具有相同值的行对

来自分类Dev

如何在 Spark/Scala 中查找具有许多空值的列

来自分类Dev

jQuery 和 XML,查找包含具有多个特定值的子项的对象

来自分类Dev

SQL - 查找和删除两列具有复制值的行

Related 相关文章

  1. 1

    查找列中具有多个值的行

  2. 2

    查找列中具有重复值的行

  3. 3

    如何查找具有所有值的所有行又包含另一行的行

  4. 4

    查找具有相同列值的连续行范围

  5. 5

    如何链接包含相同产品但具有不同列和ID的许多表

  6. 6

    构造具有许多不均匀的行和列的表-HTML

  7. 7

    在特定列中查找具有共同值的行

  8. 8

    查找另一列中具有相同值的行-Python

  9. 9

    如何在Pandas DATAFRAME中查找具有特定数据类型的列值的行

  10. 10

    查找和打印具有重复列值的行

  11. 11

    递归查找包含目标键和值的嵌套字典

  12. 12

    查找列中的空值范围-Pandas

  13. 13

    如何在Python Pandas DataFrame中的任何行具有NaN值后删除列

  14. 14

    熊猫在任何列中查找具有值的行

  15. 15

    Python Pandas-具有许多列的数据集-想要遍历每列,仅从非null的字段将行值添加到新列表

  16. 16

    搜索文件包含具有许多条件的行

  17. 17

    查找列中具有重复值的行

  18. 18

    查找具有相同列值的连续行范围

  19. 19

    oracle sql查询在与列1和2匹配的第3列中查找具有多个值的行

  20. 20

    查找具有特定值的列的行(matlab)

  21. 21

    构造具有许多不均匀的行和列的表-HTML

  22. 22

    Python Pandas:根据某些列比较数据框的行,并删除具有最低值的行

  23. 23

    如何查找其中具有某些行值的列/表

  24. 24

    具有固定行和动态列的复杂查找

  25. 25

    在python中查找具有唯一列值的行

  26. 26

    在不同的列中查找具有相同值的行对

  27. 27

    如何在 Spark/Scala 中查找具有许多空值的列

  28. 28

    jQuery 和 XML,查找包含具有多个特定值的子项的对象

  29. 29

    SQL - 查找和删除两列具有复制值的行

热门标签

归档