2016-08-02 4 views
1

Ich habe dieses Problem hier. Angenommen, ich habe ein Datumeine Zeichenfolge von einer Zelle zur anderen in der gleichen Serie und iterieren nach unten ganze Spalte

gesetzt

========================

 A  B  C 
    0 a;b a;b;c a;b;c 
    1 b;c a;b a;b;c 
    2 None c;d c;d 

========= ===============

Werte in jeder Spalte sind Strings, die einschließen ';'. Ich muss überprüfen, wann die Buchstaben (oder Wörter) durch ";" in Spalte A sind in Spalte B und produzieren und neue Spalte C, die eine Zusammenstellung der Buchstaben (keine Wiederholung) in Spalte A und B ist. Ich versuchte mit A in B A.isin (B) beide nicht Arbeit als der Boolesche war "mehrdeutig".

irgendwelche Ideen?

Antwort

1

können Sie apply verwenden, um jede Zeile zu verarbeiten. Einzelheiten finden Sie unter the docs.

def combine_words(s): 
    return ';'.join(sorted(set(c for w in s for c in w.split(';') if c))) 

df['C'] = df[['A', 'B']].fillna('').apply(combine_words, axis=1) 
+0

Danke. Wo referenziere ich die Spalten? –

+0

@ JonathanMak Derzeit werden alle Spalten verwendet. Aktualisierte Antwort, so dass eine Teilmenge verwendet wird. – Alex

+0

Ich habe das herausgefunden. Es ist ziemlich elegant. Danke noch einmal. –