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

时间:2017-09-08 15:37:39

标签: python database pandas parsing search

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

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

提前致谢!

1 个答案:

答案 0 :(得分:3)

使用set

  • x定义为测试set
  • 制作s一系列set s
  • s - x会产生一系列差异
  • (s - x).str.len()是差异的大小
  • s & x是一个布尔系列,表示是否有交叉点。或者在这种情况下,如果x位于s
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']
})