2016-11-06 1 views
1

Wenn ich zwei Datenrahmen wie:Tun tritt in den Filterkriterien in Pandas

df1: 
    | a | b | 
0 | 0 | 0 | 
1 | 0 | 1 | 
2 | 1 | 1 | 


df2: 
    | c | d | 
0 | 0 | 1 | 
1 | 1 | 1 | 
2 | 2 | 1 | 

wie könnte ich Zeilen auswählen aus df2 wo df1[df2['c']]['b'] != 0. Also mit anderen Worten, Zeilen aus df2 wo es Wert in column c ist der Index den Wert zu überprüfen, in df1 column b verwendet wird, nicht gleich 0

So einer anderen Art und Weise, sie zu betrachten. Ich wähle alle Spalten aus df2 wo column c ein Fremdschlüssel zu df1 ist, und ich will nicht, ihren Wert in column b gleich zu 0.

+0

Ist der Wert in 'df ['c']' immer gleich dem Index? – Jakub

+0

Ja, es wird immer ein Fremdschlüssel für einen Index sein – Rob

Antwort

1

ich denke, das den Trick tun soll. Lass es mich wissen, wenn du etwas anderes brauchst.

df1['index1'] = df1.index 
df = pandas.merge(df1, df2, how='left', left_on=['index1'], right_on=['c']) 
df = df[df.b != 0] 
+0

Ich dachte auch darüber nach, aber es funktioniert nur, wenn jedes Element in 'df2 ['c']' gleich dem Index dieses Elements in 'df2' ist. – Jakub

+0

können Sie auch 'left_index = True' verwenden, anstatt den linken Index zu erstellen – Rob