Frage zum Schnellen Abgleichen von Textdateien mit pandas
Verfasst: Mittwoch 31. August 2022, 07:55
Hallo zusammen,
ich bin neu in python und pandas und möchte einen möglichst zeiteffizienten Abgleich mit pandas machen, der auf Schleifen verzichtet.
Der Code unten liest 2 Files ein, die folgendermaßen aussehen:
file_1.txt:
file_2.txt:
Aufgabenstellung:
Immer wenn der Zeileneintrag von file_1.txt dem ersten Zeileneintrag von file_2.txt gleicht, soll der zweite Zeileneintrag von file_2.txt (zweite Spalte) an die betreffende Stelle von file_1.txt geschrieben werden. Das Ergebnis soll also so aussehen:
Mein Schleifenbasierter Code sieht so aus:
Das Problem ist, dass ich bei großen Dateien extrem lange warten muss, bis die Schleife durchgelaufen ist. Daher ist meine Frage, wie ich das mit pandas schneller lösen kann. Hat jemand eine Idee?
VG
vanKey
ich bin neu in python und pandas und möchte einen möglichst zeiteffizienten Abgleich mit pandas machen, der auf Schleifen verzichtet.
Der Code unten liest 2 Files ein, die folgendermaßen aussehen:
file_1.txt:
Code: Alles auswählen
1
3
4
5
8
9
Code: Alles auswählen
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
Immer wenn der Zeileneintrag von file_1.txt dem ersten Zeileneintrag von file_2.txt gleicht, soll der zweite Zeileneintrag von file_2.txt (zweite Spalte) an die betreffende Stelle von file_1.txt geschrieben werden. Das Ergebnis soll also so aussehen:
Code: Alles auswählen
1 11
3 13
4 14
5 15
8 18
9 19
Code: Alles auswählen
import numpy as np
import pandas as pd
data_file_1 = pd.read_csv('file_1.txt', delim_whitespace=True, header=None, names=["SPALTE_1","SPALTE_2"])
print(data_file_1)
data_file_2 = pd.read_csv('file_2.txt', delim_whitespace=True, header=None, names=["SPALTE_1","SPALTE_2"])
print(data_file_2)
### Wenn SPALTE_1 von file_1.txt gleich SPALTE_1 von file_2.txt, dann schreibe SPALTE_2 von file_2.txt nach data_file_1
for i in range(0,len(data_file_1)):
for j in range(0,len(data_file_2)):
if data_file_1["SPALTE_1"][i] == data_file_2["SPALTE_1"][j]:
data_file_1["SPALTE_2"][i]= data_file_2["SPALTE_2"][j]
print(data_file_1)
VG
vanKey