【问题标题】:Searching through data base for partial and full match integers在数据库中搜索部分和完全匹配的整数
【发布时间】:2018-02-17 14:10:17
【问题描述】:

我正在尝试搜索包含一个或多个整数值的列的数据框,以匹配一个或多个给定整数。 数据库中的整数之间有一个'-' 例如

--------------------------------------------------
| Customer 1     |1124                |
--------------------------------------------------
| Customer 2     |1124-1123           |
--------------------------------------------------
| Customer 3     |1124-1234-1642      |
--------------------------------------------------
| Customer 3     |1213-1234-1642      |
--------------------------------------------------

这里的目标是进行部分匹配和完全匹配,并且能够并且能够找出有多少整数不匹配。

例如,假设我找到了所有具有 1124 的客户,输出将如下所示(脱离我提供的示例)

--------------------------------------------------
| Customer 1     |1124                |None
--------------------------------------------------
| Customer 2     |1124-1123           |1
--------------------------------------------------
| Customer 3     |1124-1234-1642      |2
--------------------------------------------------

提前谢谢!

【问题讨论】:

    标签: python database pandas parsing search


    【解决方案1】:

    使用set

    • x定义为测试set
    • 制作s一系列sets
    • s - x 造成一系列差异
    • (s - x).str.len() 是差异的大小
    • s & x 是一个布尔系列,指示是否存在交叉路口。或者在这种情况下,如果 xs

    x = {'1124'}
    s = df['col2'].str.split('-').apply(set)
    
    df.assign(col3=(s - x).str.len())[s & x]
    
             col1            col2  col3
    0  Customer 1            1124     0
    1  Customer 2       1124-1123     1
    2  Customer 3  1124-1234-1642     2
    

    设置

    df = pd.DataFrame({
        'col1': ['Customer 1', 'Customer 2', 'Customer 3', 'Customer 3'],
        'col2': ['1124', '1124-1123', '1124-1234-1642', '1213-1234-1642']
    })
    

    【讨论】:

    • 这太棒了,我试过但不知道如何计算错误的数量:(
    • 谢谢@Vaishali
    • 太棒了,谢谢!!快速提问。对于 col3,您是如何创建新列的,或者 col3=(s - x) 是如何为您创建的。原来的DF只有两列,不知道第三列怎么加
    • pd.DataFrame.assign 使用您传递的关键字=参数指定的新列创建原始数据帧的副本。
    • 完美。非常优雅的解决方案。我的甚至不起作用的代码可能是长度的 6 倍。再次非常感谢!
    猜你喜欢
    • 2011-10-22
    • 2023-04-03
    • 2016-07-19
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多