在数据库中搜索部分和完全匹配的整数

2024-04-26 17:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图搜索一个数据帧,其中的列可以有一个或多个整数值,以匹配一个或多个给定的整数。 例如,数据库中的整数之间有一个“-”

--------------------------------------------------
| 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
--------------------------------------------------

提前谢谢!你知道吗


Tags: 数据none数据库示例目标客户整数customer
1条回答
网友
1楼 · 发布于 2024-04-26 17:37:16

使用set

  • x定义为测试set
  • 使s成为一系列set
  • 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']
})

相关问题 更多 >