2016-03-31 12 views
-1

Ich möchte zwei Serien in einem Datenrahmen vergleichen und eine boolesche True oder False Antwort erhalten, ob sie genau die gleichen Elemente haben.Wie überprüfe ich, dass zwei Serien eines Pandas DataFrame die gleichen Elemente haben?

Wenn ein Element anders ist, dann würde ich gerne seine Indexnummer wissen.

Vielen Dank!

+0

Könnten Sie kein Beispiel hinzufügen? –

+0

Sorry, ich bin neu im Stack Überlauf .. Mein Code ist unten veröffentlicht, (die zweite Antwort von oben). – thescoop

Antwort

1

IIUC Sie isin verwenden können:

In [123]: 
s1 = pd.Series(np.arange(5)) 
s2 = pd.Series(np.arange(1,6)) 
s2 

Out[123]: 
0 1 
1 2 
2 3 
3 4 
4 5 
dtype: int32 

In [125]:  
s1.isin(s2) 

Out[125]: 
0 False 
1  True 
2  True 
3  True 
4  True 
dtype: bool 

Aus dem oben können Sie die Indexwerte erhalten, die False sind durch Negieren der Maske ~ mit:

In [127]: 
s1[~s1.isin(s2)].index 

Out[127]: 
Int64Index([0], dtype='int64') 
0

EdChum, vielen Dank für Ihre Antwort!

Es ist besser als das, was ich geschafft haben, zu arbeiten, die ich weiter unten sowieso veröffentlichen wird:

ser1 = Series(np.arange(16)) 
arr = ser1.reshape(4,4) 
df = DataFrame((arr),columns=['a','b','c','d']) 
ser_e = Series([2,6,10,14]) 
df['e'] = ser_e 

df['c']>df['b'] 
df.loc[df['c'] != df['e'] ]