pandas 匹配字符串与子字符串的匹配项

wn9m85ua  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(169)

我有:
| 短语|透镜|
| - ------|- ------|
| 我爱|第二章|
| 他演奏|第二章|
| 我喜欢人|三个|
| 爱情|1个|
我有一个 Dataframe ,对于每个单元格,我希望找到它在其他单元格中的出现,并将其显示在单独的列中
我试过这个

for i in range(len(df['phrase'])):
     for j in range(len(df['phrase'])):
         if (df['phrase'].iloc[i] in df['phrase'].iloc[j]) and (df['phrase'].iloc[i] != df['phrase'].iloc[j]):
             df['match'].iloc[i]=df['phrase'].iloc[j]

我预料到了:
| 短语|火柴|
| - ------|- ------|
| 我爱|我喜欢人|
| 我喜欢人|非|
| 爱情|我爱|
| 爱情|我喜欢人|
| 他演奏|非|

cwtwac6a

cwtwac6a1#

这就是你想要的吗?

import pandas as pd

# Your dataset
data = [['i love', 2], ['he plays', 2], ['i love people', 3], ['love', 1]]
df = pd.DataFrame(data, columns=['phrase', 'len'])

# Find phrases and matchs
init_phrases=list(df['phrase'])
phrases=[]
matchs=[]
for i in range(len(init_phrases)) :
    init_phrase=init_phrases[i]
    match_found=False
    for j in range(len(init_phrases)) :
        if i!=j :
            compare_phrase=init_phrases[j]
            if init_phrase in compare_phrase :
                phrases.append(init_phrase)
                matchs.append(compare_phrase)
                match_found=True
    if match_found==False :
        phrases.append(init_phrase)
        matchs.append("non")

# Output dataset    
df_output=pd.DataFrame({"phrase":phrases,"match":matchs})
df_output

相关问题