Python Odhalování duplicitní řetězce v datovém sloupci

0

Otázka

Mám pod University sloupec, více řetězců z university extrahované z člověka pokračovat. Ale výsledky obsahuje mnoho napálí. To je to, co hodnota v rámci univerzity je jako ['university of washington bakalář vědy", "university of washington", "informační školy student researcher']. Chtěl jsem oddělit čárkou řetězec, aby si každý z jednotlivých řetězec a obsahovala řetězec, pokud není obsažena jiná. Takže v tomto případě pouze university of washington bakalářské vědy a informace školy vysokoškolské reseacher. Zde je kód, snažil jsem se na tomto řádku. A nepřináší správný výsledek. Tak jsem se snažil oddělit čárkou dlouhé řetězce a smyčky přes split prvky. A uvnitř smyčky podívám se, jestli můj seznam je prázdný, pokud ano, pak připojit první prvek, pokud ne, pak zkontrolujte, zda existující řetězec v seznamu obsahuje nový prvek, pokud ano, dělat nic, pokud ne zkontrolujte, zda prvek obsahuje stávající pak, zda vyměnit nebo přidat nový prvek.

for i,row in df.iterrows():
lst=[]
element=row.UNIVERSITY.split(',')
for candidate in element:
    if not lst:
        lst.append(candidate)
        print('This is the first item'+ candidate)
        print('current lst:'+ str(lst))
    else:
        for existing in lst:
            print('This is what we have in the list now'+ existing)
            if existing in candidate:
                lst.remove(existing)
                lst.append(candidate)
                print('dupe detected')
            elif candidate in existing:
                continue
            else:
                st.append(candidate)
                print('new item'+ candidate)
    
    
    
print(lst)

A pro výstupy:

This is the first item['university of washington bachelor of science'
current lst:["['university of washington bachelor of science'"]
This is what we have in the list now['university of washington bachelor of science'
new item 'university of washington'
This is what we have in the list now['university of washington bachelor of science'
new item 'information school undergraduate researcher']
["['university of washington bachelor of science'"]

Já nevím, proč university of washington přešel do jiného smyčky a proto přijal novou položku university of washington' a já nevím, proč informace školy vysokoškolské výzkumník není v konečném seznamu. Co je tady špatně?

duplicates loops split string
2021-11-22 18:42:34
1

Nejlepší odpověď

0

Vidím jeden problém, pokud váš seznam je ["ahoj","tam"] a přidáte "ahoj" to bude odstranit zdravím a přidat "ahoj", ale ignorují, "tam"

Je to proto, že pro smyčce, trvá akce při opakování, před kontrolou každý prvek. To opravit, doporučuji opakování dvakrát

boolean good=true
//check if candidate is a substring of an element
for element in lst:
   if candidate in existing:
      //candidate is bad, move to next candidate, however you want to do that
      good=false
if(good):
   //now we know we will add candidate, so we remove all elements that are a substring of candidate:
   for element in lst:
      if element in candidate:
         st.remove(element)
   //now we can add candidate (we do this last so we don't remove it when <element=candidate> in candidate = true)
   st.add(candidate)
2021-11-22 18:57:36

Díky moc! Zkusím se na to!
Teddy 547

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................