2017-12-08 3 views
2

ich einen Pandas Datenrahmen haben:vergleichen und zu aktualisieren Pandas Datenrahmen Spalte Listen mit Strings aus einer anderen Spalte

+--------+---------+------+----------------+ 
| Name | Address | ID | Linked_To | 
+--------+---------+------+----------------+ 
| Name A | ABC  | 1233 | 1234;1235  | 
| Name B | DEF  | 1234 | 1233;1236;1237 | 
| Name C | GHI  | 1235 | 1234;1233;2589 | 
+--------+---------+------+----------------+ 

Einige der IDs in der Linked_To Spalte Datensätze sind unter der Spalte Name. Ich kann ein Wörterbuch erstellen und die Daten in der Spalte Linked_To als Liste übergeben. Ich bin mir jedoch nicht sicher, wie es weitergehen soll. Im Idealfall würde Ich mag etwas sehen, wie:

+--------+---------+------+-------------------------+ 
| Name | Address | Id |  Linked To  | 
+--------+---------+------+-------------------------+ 
| Name A | ABC  | 1233 | Name B;Name C   | 
| Name B | DEF  | 1234 | Name A;Name D; Name E | 
| Name C | HIJ  | 1235 | Name B;Name A; None  | 
+--------+---------+------+-------------------------+ 
+0

Wie sieht Ihr Name 1 und Name A beziehen? Sind diese beiden Datenrahmen verwandt? –

+0

@ScottBoston Editiert die Tabellen für Klarheit. Name A = Name 1. Ich habe das obige entsprechend bearbeitet. –

Antwort

1

Es zäh scheint ohne etwas Looping, dies zu tun:

linked = df.Linked_To.str.split(';') 

def pull_name(iden): 
    try: 
     return df[df.ID == int(iden)].Name.iat[0] 
    except: 
     return str(None) 

res = linked.apply(lambda ids: '; '.join([pull_name(i) for i in ids])) 

print(res) 
0   Name B; Name C 
1  Name A; None; None 
2 Name B; Name A; ... 
Name: Linked_To, dtype: object 
Verwandte Themen