2017-08-29 3 views
0

In Pandas konnte ich früher eine Datenframe-Spalte verwenden, sie mit einer zweiten Datenspalten-Spalte vergleichen und alle fehlenden Elemente aus dieser zweiten Spalte erhalten :Abrufen aller Werte in einer Spalte, die in keiner anderen Spalte vorhanden sind

notYetIncluded = notYetIncluded.loc[~notYetIncluded["ID"].isin(df_o["ID"])] 

jedoch, dass nicht mehr funktioniert in den aktualisierten Pandas (erhalte ich die Fehler ValueError: Buffer dtype mismatch, expected 'Python object' but got 'long long'). Wie mache ich das?

Der Teil, den Bruch zu verursachen scheint, ist dies: notYetIncluded["ID"].isin(df_o["ID"])

Ich weiß nicht, ob es hilft, aber diese Spalten zur Zeit speichern nur Zahlen wie 4150, 5808 usw. Sie sind alle 4 Ziffern oder weniger lang.

Zum Beispiel:

notYetIncluded: 0 5747 1 5746 2 5725 3 5722 4 5720 5 5707 Name: ID, dtype: object

df_o: 24 5365 4 5720 15 5599 Name: ID, dtype: int64

+0

Was sind die Datentypen dieser Spalten? – MattR

+0

Dies ist insbesondere eine Nummer – Elliptica

+0

sind sie beide "Nummern"? Versuchen Sie 'print (dataframe.dtypes)' und lassen Sie uns wissen, was die Datentypen dieser Spalten sind – MattR

Antwort

0

Verwenden df.astype(str) Ihre Spalten Zeichenfolge zu werfen und dann vergleichen.

n = notYetIncluded 
notYetIncluded = n[~n["ID"].astype(str).isin(df_o["ID"].astype(str))] 
+0

Es scheint, dass dieser Teil den Bruch verursacht 'notYetIncluded [" ID "]. Isin (df_o [" ID "])' – Elliptica

+0

@Elliptica Wie wäre es damit, uns vielleicht ein paar Daten zu zeigen. –

+0

@COLDSPEED, Ich habe einige Daten zu meiner Problemstellung hinzugefügt. Ihre Lösung hier funktioniert gut als eine temporäre Maßnahme, obwohl ich immer noch gerne verstehen würde, was sich geändert hat, so dass meine Daten früher verglichen werden konnten und nicht mehr sein können, da weder mein Code noch die Daten, die ich verwende hat sich verändert. – Elliptica

Verwandte Themen