Ich habe den folgenden Pandas Datenrahmen in Python3.5:Verwenden iterrows in Pandas Mismatches zwischen Strings zu finden, Fehler
import pandas as pd
df = pd.Dataframe(...)
print(df)
die
string1 string2
'abcdefg...' 'abcSefg...'
'Iknowhow...' 'Eknowhow...'
'Thecatis...' 'Thekatis...'
...
gibt wollte ich zuerst den Standort von Mismatches finden zwischen string1
und string2
und an den Dataframe df
anhängen. Ich benutze diesen Code:
df["different_positions"] = [[i for i in range(len(row.string2))
if row.string1[i] != row.string2[i]] for _, row in df.iterrows()]
Das wird mir alle Positionen geben, die Mismatches auftreten. Nun möchte ich eine separate Spalte, die jeden Buchstaben des Mismatch ausgibt. Zum Beispiel in string2
gibt es eine S
anstelle ein d
in der ersten Reihe, ein E
statt I
in der zweiten Reihe, usw.
ich der Code gedacht, jedoch
df["different_letters"] = [[i for i in row.string2
if row.string1[i] != row.string2[i]] for _, row in df.iterrows()]
sein, Es scheint, das ist nicht korrekt. Ich erhalte eine NameError
bei for _, row
, das heißt
NameError: name 'i' is not defined
Wie kann ich Ausgang den nicht passenden Brief an unpassender Position entsprechen?
Was ist die Ausgabe, die Sie erhalten? –
@AkshatMahajan Für die Spalte 'different_positions' erhalte ich eine Liste aller nicht übereinstimmenden Positionen, z. "[5, 11, 28, 81]". Für den Fehler siehe oben Bearbeiten. – ShanZhengYang