如果两列之间的部分匹配成功,则返回True

时间:2020-08-04 12:03:50

标签: python

我正在寻找部分比赛成功的机会。下面是数据框的代码。

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

2 个答案:

答案 0 :(得分:2)

您可以将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参数,因为它使我们可以一次访问给定行的所有列。

答案 1 :(得分: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