我正在尝试使用可以包含一个或多个整数值的列搜索数据帧,以匹配一个或多个给定的整数。 数据库中的整数之间有一个“ - ”,例如
--------------------------------------------------
| 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
--------------------------------------------------
提前致谢!
答案 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']
})