2017-06-26 5 views
-2

Ich habe Listen unterschiedlicher Größe (AAA, BBB, CBC). Ich möchte die Listen vergleichen und aufzeichnen, welche Listen ähnliche Werte haben. Zum Beispiel:Gleiche Werte in zwei Datenfeldern unterschiedlicher Länge finden

AAA BBB CBC 
--- --- --- 
A01 A01 A01 
B02 C03 B02 
C03 F06 D04 
E05   F06 
G07 

Das Ergebnis ich suche wie dies

A01 = AAA, BBB, CBC 
B02 = AAA, CBC 
C03 = AAA, BBB, CBC 
D04 = CBC 
E05 = AAA 
F06 = BBB, CBC 
G07 = AAA 

Gibt es eine Möglichkeit, dies zu tun, ohne die Listen Schleifen und Vergleichen aussehen würde? Ich habe versucht, "Isin" Befehl ohne Erfolg zu verwenden. Vielen Dank.

+0

Ihre Listen sortiert zu sein scheint, ist es eine Annahme? – Setop

+0

Wie sieht Ihr Dataframe aus? Ist es eine Serie von Serien? Was sind die Indizes und Spalten? – victor

+0

Die Liste ist nicht sortiert. Das Beispiel wurde gemacht, um das Problem von Säulen unterschiedlicher Größe hervorzuheben. – getaglow

Antwort

2

die folgende Vorgehensweise Lassen Sie verwenden:

AAA = ['A01','B02','C03','E05','G07'] 
BBB = ['A01','C03','F06'] 
CBC = ['A01','B02','D04','F06'] 
lists = ['AAA','BBB','CBC'] 
df_out = pd.concat([pd.Series(eval(i)) for i in lists], axis=1, keys=lists) 
df_out.stack().reset_index(name='value').groupby('value')['level_1'].apply(', '.join) 

Ausgang:

value 
A01 AAA, BBB, CBC 
B02   AAA, CBC 
C03   BBB, AAA 
D04    CBC 
E05    AAA 
F06   BBB, CBC 
G07    AAA 
Name: level_1, dtype: object 
+0

Danke. Das funktionierte wie ein Zauber und lehrt mich mehr darüber, wie man Pandas benutzt. Nochmals vielen Dank – getaglow

Verwandte Themen