【问题标题】:return True if partial match success between two column如果两列之间部分匹配成功,则返回 True
【发布时间】:2020-11-24 12:39:23
【问题描述】:

我正在寻找部分匹配成功。下面是数据框的代码。

import pandas as pd
data = [['tom', 10,'aaaaa','aaa'], ['nick', 15,'vvvvv','vv'], ['juli', 14,'sssssss','kk']] 
# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Age','random','partial'])
df

输出: 我期待下面显示的输出

   Name  Age   random partial  Matches
0   tom   10    aaaaa     aaa  True
1  nick   15    vvvvv      vv  True
2  juli   14  sssssss      kk  False

【问题讨论】:

标签: python


【解决方案1】:

您可以将df.apply 与一个 lambda 函数结合使用,该函数使用 in 检查部分字符串是否是另一个字符串的一部分。

然后我们可以将其分配给数据框中的新列:

>>>import pandas as pd
>>>data = [['tom', 10,'aaaaa','aaa'], ['nick', 15,'vvvvv','vv'], ['juli',14,'sssssss','kk']] 
>>>df = pd.DataFrame(data, columns = ['Name', 'Age','random','partial'])

>>>df['matching'] = df.apply(lambda x : x.partial in x.random, axis=1)
>>>print(df)
   Name  Age   random partial  matching
0   tom   10    aaaaa     aaa      True
1  nick   15    vvvvv      vv      True
2  juli   14  sssssss      kk     False

使用df.apply 时需要注意的重要一点是axis 参数,因为它允许我们一次访问给定行的所有列。

【讨论】:

    【解决方案2】:
    df['Matches'] = df.apply(lambda row: row['partial'] in row['random'], axis = 'columns')
    df
    

    给予

    
    Name    Age random  partial Matches
    0   tom 10  aaaaa   aaa True
    1   nick    15  vvvvv   vv  True
    2   juli    14  sssssss kk  False
    

    【讨论】:

    • 姓名年龄随机部分匹配 0 tom 10 JP b c Morgan JP Morgan True 1 nick 15 morgan ba stanley Morgan stanley True 我们如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多