Ich verbrachte gerade eine Stunde auf stackoverflow, der nach einer ähnlichen Frage sucht, also entschuldigen Sie bitte, wenn dieses vorher gebeten worden ist und ich es nicht gefunden habe.Python pandas flag, das Werte in der Spalte in einem Datenrahmen zur Spalte in einem anderen Datenrahmen
Ich habe folgenden Datenrahmen df:
Id | Category | Subcategory | Count | Flag | Phone_number
1 A aa 4534 Y 222-444-3333
2 B bb 4807 Y 3335557777
3 C cc 8978 222-444-3333
4 D dd 9874 333-555-7777
5 E ee 3187 555-666-8888
6 F ff 8573 5556668888
Die Spalte "Flag" zeigt falsche Datensätze etabliert. Jetzt muss ich alle Datensätze markieren/markieren, die dieselbe Telefonnummer haben, obwohl sie keine Flagge haben.
Zuerst muss ich alle "-" aus Telefonnummer herausnehmen, da es von Benutzern eingegeben wurde.
df['Phone_number'] = df['Phone_number'].str.replace('-', '')
(nicht sicher, dies ist der beste Weg)
Als nächstes ich keine bessere Art und Weise denken, könnte es eine neue erstellen df von Datensätzen mit der Y-Flag dann zu nähern und ohne die Y-Flagge .
new_df = df.loc[df['Flag'] == 'Y']
df_withoutY = df.loc[df['Flag'] != 'Y']
Aber jetzt bin ich fest. Wie vergleiche ich die Telefonnummer in df_withoutY und wenn sie in new_df vorhanden ist, füge eine neue Spalte "incorrect" = "Y" hinzu.
Ich dachte an so etwas, aber alles False bekommen.
df_withoutY['Phone_number'].isin(new_df['Phone_number'])
Das hat nicht funktioniert:
df_withoutY['incorrect'] = np.where((df_withoutY['Phone_number'].isin(new_df['Phone_number'])) == True, "Y" " ")
TypeError: invalid type comparison
Nicht sicher, ob dies hilfreich ist, aber in Excel, würde ich die beiden in zwei separaten Registerkarten von Flag geteilt haben und verwendet dann die Match-Funktion.
=MATCH(df_withoutY!AK2,new_df!AK$2:AK$3395,0)
Wenn ich das tue, ich die beiden dfs wurde Hobeln wieder zusammen auf Verschmelzung, aber jetzt die neue Spalte „falsch“ ist. Wenn es einen Ansatz geben würde, ohne die Daten zu teilen, wäre das sogar noch besser.
Dies ist das Ende Ziel df:
Id | Category | Subcategory | Count | Flag | Phone_number | incorrect
1 A aa 4534 Y 222-444-3333
2 B bb 4807 Y 3335557777
3 C cc 8978 222-444-3333 Y
4 D dd 9874 333-555-7777 Y
5 E ee 3187 555-666-8888
6 F ff 8573 5556668888
Danke
, wenn ich eine Chance habe, werde ich einen tieferen Einblick nehmen. – piRSquared