Spaltenwerte über DataFrame ändern
Verfasst: Sonntag 11. Juni 2017, 02:40
Hallo, ich stehe momentan komplett auf dem Schlauch.
Ich importiere zwei Excel listen mittels
und wandle sie in ein DataFrame um.
Die Beiden Listen haben jeweils eine Spalte "Artikel" und eine Spalte "EAN-Nummer".
Nun möchte ich ganz einfach den Werten der Spalte "Nummer" der Liste 2, die Nummern der Liste 1 zuweisen, wenn Name1==Name2. Dies soll nicht mittels einer Schleife gemacht werden sondern möglichst mittels Fancy indexing in der Form:
sooo. in den Fällen in welchen die Namen übereinstimmen wird der Nummer 2 der Wert von Nummer 1 zugewiesen. Das Problem ist nun nur, dass die Spalte an den Stellen an welchen Name1 != Name2 ist, der Wert NaN eingetragen wird. Das ist auch logisch da hier FALSE ist und demnach NaN zurückgibt.
Meine Frage ist nun: WIE bekomme ich es hin, dass an den Stellen an welchen die Namen nicht überein stimmen, die Nummern beibehalten werden. Es dürfte sich denke ich um nur eine Zeile Code handeln aber ich komme beim besten Willen nicht drauf. Wie gesagt ich möchte es ohne Schleife sondern möglichst pythonisch machen weshalb ich (Anfänger!!) auch über alle weiteren Verbesserungsvorschläge zu meinem Code dankbar bin.
Ich importiere zwei Excel listen mittels
Code: Alles auswählen
data1=pd.read_excel("Data_folder1.xlsx")
data2=pd.read_excel("Data_folder2.xlsx")
Code: Alles auswählen
data1=pd.DataFrame(data1)
data2=pd.DataFrame(data2)
Nun möchte ich ganz einfach den Werten der Spalte "Nummer" der Liste 2, die Nummern der Liste 1 zuweisen, wenn Name1==Name2. Dies soll nicht mittels einer Schleife gemacht werden sondern möglichst mittels Fancy indexing in der Form:
Code: Alles auswählen
data2["EAN-Nummer"]=EAN_1[data1["Artikel"]==data2["Artikel"]]
Code: Alles auswählen
data1["Artikel"]==data2["Artikel"]
Code: Alles auswählen
EAN_1[data1["Artikel"]==data2["Artikel"]]
Meine Frage ist nun: WIE bekomme ich es hin, dass an den Stellen an welchen die Namen nicht überein stimmen, die Nummern beibehalten werden. Es dürfte sich denke ich um nur eine Zeile Code handeln aber ich komme beim besten Willen nicht drauf. Wie gesagt ich möchte es ohne Schleife sondern möglichst pythonisch machen weshalb ich (Anfänger!!) auch über alle weiteren Verbesserungsvorschläge zu meinem Code dankbar bin.