标签: matching

Pandas:在两个数据帧中查找匹配的行(不使用“合并”)

假设我有这两个数据框,其列数相同,但行数可能不同:

tmp = np.arange(0,12).reshape((4,3))
df = pd.DataFrame(data=tmp) 

tmp2 = {'a':[3,100,101], 'b':[4,4,100], 'c':[5,100,3]}
df2 = pd.DataFrame(data=tmp2)

print(df)
   0   1   2
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11

print(df2)
     a    b    c
0    3    4    5
1  100    4  100
2  101  100    3
Run Code Online (Sandbox Code Playgroud)

我想验证 的行是否df2与 的任何行匹配 df,也就是说,我想获得一系列(或数组)布尔值来给出以下结果:

0     True
1    False
2    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

我认为类似的isin方法应该有效,但我得到了这个结果,这导致了一个数据框并且是错误的:

print(df2.isin(df))
       a      b      c
0  False  False  False
1  False  False …
Run Code Online (Sandbox Code Playgroud)

python matching dataframe pandas isin

2
推荐指数
1
解决办法
2833
查看次数

对同一张纸上两个不同列上的值进行匹配/排序

我正在尝试解决每周都会重复执行的任务。我所做的是将一列(A 列)与另一列(E 列)中的 ID 集进行比较,反之亦然。如果在第二列中找到第一列中的值,则该值将移动到值匹配的位置。如果两列中都没有匹配的数据,则该列将为空白。所有匹配的值都会下移,所有不匹配的值都会上移进行检查。

这是下面的示例数据,可在“示例”选项卡中找到:

A栏 B栏
399381935 375634552
407932943 399381935
409046041 407932943
448734453 409046041
452821913 431446526
459673358 448734453
463178020 448879624
485888087 452821913
498826033 458359366
498826520 459673358
503189964 463178020
509536058 485888087
509542349 497540933
510595029 498826033
510595505 498826520
510601532 502416642
511701201 502433066
512763252 503189964
515003633 506534952
515008102 509536058
520097636 509542349
510307762
510312887
510320772
510595029
510601532
511701201
512763252
515003633

希望运行脚本后,完成的数据应该具有如下所示的结果,其中所有匹配的数据都分组在下面,这些唯一值被推到上面,这样就更容易检查:

A栏 B栏
375634552
431446526
448879624
458359366
497540933
502416642
502433066
506534952
510307762
510312887
510320772
510595505
515008102
520097636
399381935 399381935
407932943 407932943
409046041 …

matching google-sheets google-apps-script

2
推荐指数
1
解决办法
416
查看次数

二分匹配

如何在C或C++中实现二分匹配算法(可能基于最大流算法)?

具体来说,我把这个输入放在一个文件中:(1,3)(1,5)(2,5)

(M,F) - >其中M代表MALE的id,F代表FEMALE的id.

我需要找到最大匹配数并显示匹配的夫妻.喜欢:匹配:1&3,2和5

我已经读过一些书籍,我可以将这个问题基于"网络中的最大流量"算法,但除了句子"这个问题可以通过......算法解决"之外,我找不到任何具体的信息.我对max-flow知之甚少,也不知道如何实现它...

c c++ algorithm graph matching

1
推荐指数
1
解决办法
6620
查看次数

如何通过sql语句的where子句中的匹配参数数来订购表?

我正在编写sql来通过许多参数搜索数据库.我如何按照与where子句中的大多数参数匹配的项来排序结果集.例如:

SELECT * 
FROM users 
WHERE username = 'eitan' 
OR email = 'eitan@eitan.com' 
OR company = 'eitan'


Username   |  email                |   company

1) eitan   |     blah@blah.com     |     blah

2) eitan   |     eitan@eitan.com   |    eitan

3) eitan   |    eitan@eitan.com    |     blah
Run Code Online (Sandbox Code Playgroud)

应订购如下:

2,3,1.

谢谢.(ps查询不是那么容易,在WHERE中有很多连接和很多OR)

埃坦

sql parameters matching

1
推荐指数
1
解决办法
77
查看次数

python re.search(正则表达式)仅搜索具有{{world}}模式的单词

我有在我所喜欢插入自定义标记HTML文件{{name}},{{surname}}.现在,我想寻找谁喜欢的模式完全匹配的标签{{world}}唯一甚至不是{world}},{{world},{world},{ word },{{ world }},等我写的小代码为

re.findall(r'\{(\w.+?)\}', html_string)
Run Code Online (Sandbox Code Playgroud)

它返回我不想要的模式{{world}},{world},{world}}之后的单词.我想完全匹配{{world}}.有人可以指导我吗?

python regex matching

1
推荐指数
1
解决办法
250
查看次数

Python,匹配两个列表的元素

x= [0,2,3,5,6];
y= [64,384,1024,4096,384];
Run Code Online (Sandbox Code Playgroud)

以上是我正在使用的两个数组.我试图以pythonic方式将元素匹配在一起

例:

如果xType是2,我想计算一个被调用的变量,yType以对应y中的值(位置明智).所以我应该得到y = 384.如果xType = 3我应该得到1024.

我该怎么做呢?

python list elements matching

1
推荐指数
2
解决办法
5355
查看次数

字符串匹配算法

我有一个带有企业数据库的python应用程序,我希望能够按名称搜索企业(用于自动完成目的).
例如,考虑名称"最佳购买","麦当劳","索尼"和"苹果".

我希望"app"返回"apple",以及"appel"和"ple"."麦当劳"应该回归"麦当劳"."bst b"和"best-buy"都应该返回"最佳购买".

我在寻找哪种算法,是否有python实现?

谢谢!

string algorithm search matching

1
推荐指数
1
解决办法
552
查看次数

如果字符串包含特定数字,则抓取

我有一个如下的数据集 -

> a_i
 [1] "Our-Facebook-Page/td-p/3175990"                           
 [2] "Our-Facebook-Page/td-p/3175990/page/2"  
   ....    
[17] "Data-duplicate-files/td-p/4743405"                  
[18] "Data-duplicate-files/td-p/4743405/page/2"            
[19] "Subscription-Release-1-sucks/td-p/4556739"       
[20] "Subscription-Release-1-sucks/td-p/4556739/page/2"

 > b_i
[1] "Data-duplicate-files/td-p/4743405"                  
[2] "Subscription-Release-1-sucks/td-p/4556739"
[3] "Quick-fix/td-p/4556740"
Run Code Online (Sandbox Code Playgroud)

我的目标是找到仅存在于b_i中的7位数字(例如4743405,4556739,4556740),并从包含相应数字的a_i中获取数据.所以最终输出将是这样的 -

[1] "Data-duplicate-files/td-p/4743405"                  
[2] "Data-duplicate-files/td-p/4743405/page/2"            
[3] "Subscription-Release-1-sucks/td-p/4556739"       
[4] "Subscription-Release-1-sucks/td-p/4556739/page/2""
Run Code Online (Sandbox Code Playgroud)

我能够使用strsplit(b_i,"/")获取数字但我仍然在抓取包含匹配数字的列表.是否有任何优雅的方式来映射这些数字并获取列表?

regex r pattern-matching matching string-matching

1
推荐指数
1
解决办法
67
查看次数

在更大的图中最大二分匹配的有效技巧

问题:我们给出了两个数组A和B的整数.现在,在每个步骤中,我们可以从两个数组中删除任何2个非共同素数整数.我们必须找到这些步骤可以删除的最大对数.

界限: A的长度,B <= 10 5
每个整数<= 10 9
Dinic的算法 - O(V 2 E)
Edmonds-karp算法 - O(VE 2)
Hopcroft-Karp算法 - O(E sqrt(V))

到目前为止我的方法:这可以被建模为具有两个集合A和B的二分匹配问题,并且可以在来自相应集合的每个非共同素数对之间创建边缘.
但问题是图中可能存在O(V 2)边,并且对于如此大的图,大多数二分匹配和最大流算法将是超慢的.

我正在寻找一些特定的问题或数学优化,可以在合理的时间内解决问题.为了通过测试用例,我需要最多O(V log V)或O(V sqrt(V))算法.

提前致谢.

c++ algorithm optimization matching network-flow

1
推荐指数
1
解决办法
825
查看次数

Perl:匹配时清空$ 1正则表达式值?

读者朋友,

我有以下正则表达式问题:

 #!/usr/bin/perl -w
use 5.010;
use warnings;

my $filename = 'input.txt';
open my $FILE, "<", $filename or die $!;

while (my $row = <$FILE>)
{                   # take one input line at a time
    chomp $row;
    if ($row =~ /\b\w*a\b/)
    {
       print "Matched: |$`<$&>$'|\n";  # the special match vars
       print "\$1 contains '$1' \n";
    }
    else
    {
       #print "No match: |$row|\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

input.txt中

I like wilma. 
this line does not match
Run Code Online (Sandbox Code Playgroud)

产量

Matched: |I like <wilma>|
Use of …
Run Code Online (Sandbox Code Playgroud)

regex perl matching

1
推荐指数
1
解决办法
1039
查看次数