[FIXED] Suchen Sie nach ähnlichen Wörtern und fügen Sie die passenden Wörter der neuen Spalte hinzu

Ausgabe

Ich möchte beide Spalten wie col_one und similar_words nehmen. verwendet werden, um nach ähnlichen Wörtern zu suchen Sie werden sehen, dass in col_one zum Beispiel WPH Wörter wie ähnliche_Wörter ist [WP, W, WPH] hat, wenn gefunden, fügen Sie die übereinstimmenden Wörter der neuen Spalte hinzu.

Meistens steht der Name vorne, z. B. ZEN, W, WICE, aber es gibt einige Namen. wieder mit einem Symbol nach dem Namen, z. B. ZEN-R, ZEN-W2, ZEN13P2302A

meine Daten

import pandas as pd

list20 = ['ZEN', 'OOP', 'WICE', 'XO', 'WP', 'K', 'WGE', 'YGG', 'W', 'YUASA', 'XPG',  'ABC', 'WHA', 'WHAUP', 'WFX', 'WINNER', 'WIIK', 'WIN', 'YONG', 'WPH', 'KCE']

data = {
  "col_one": ["ZEN", "WPH", "WICE", "YONG", "K", "XO", "WIN", "WP", "WIIK", "YGG-W1", "W-W5", "WINNER", "YUASA", "WGE", "WFX", "XPG", "WHAUP", "WHA", "KCE13P2302A", "OOP-R"],
}
df = pd.DataFrame(data)

df['similar_words'] = df['col_one'].apply(lambda x: [c for c in list20 if c in x])
df

wird wie dieses Bild aussehen

Geben Sie hier die Bildbeschreibung ein

Erwartete Ausgabe

Geben Sie hier die Bildbeschreibung ein

Lösung

Durchlaufen similar_wordsSie das Array und finden Sie die Länge der übereinstimmenden Wörter:

df["match_len"] = df.apply(lambda row: [len(sw) if sw in row["col_one"] else 0 for sw in row["similar_words"]], axis=1)

>>        col_one     similar_words  match_len
>> 0           ZEN             [ZEN]        [3]
>> 1           WPH      [WP, W, WPH]  [2, 1, 3]
>> 2          WICE         [WICE, W]     [4, 1]

Suchen Sie dann den Index des Wortes mit maximaler Länge und geben Sie das Wort an diesem Index zurück:

df["same_word"] = df.apply(lambda row: row["similar_words"]			
.index(max(row["match_len"]))], axis=1) >> col_one similar_words match_len same_word >> 0 ZEN [ZEN] [3] ZEN >> 1 WPH [WP, W, WPH] [2, 1, 3] WPH >> 2 WICE [WICE, W] [4, 1] WICE


Beantwortet von –
Azhar Khan


Antwort geprüft von –
Mary Flores (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like