2017-01-13 5 views
1

Say I Datenrahmen haben:erstellen Pandas Datenrahmen mit Spalten basierend auf einem Vergleich von anderen Datenrahmen

df1: 
a b 
3 0 
4 5 
1 20 

df2: 
c d 
2 7 
5 3 
0 9 

I df3 mit 2 Spalten erhalten möchten. Jeder ist so (Pseudo-Code) berechnet:

if df1 > df2: df3 = 1 
else: df3 = 0 

Alle Spalten in DF1 zu Spalten in df2 jeweils verglichen werden müssen.

So schließlich möchte ich erhalten:

df3: 
e f 
1 0 
0 1 
1 1 

Ich dachte, dass df3 = df1.gt (DF2) würde das tun, aber es kam nicht. Es gab mir 4 Spalten. Und ich möchte keine Lambdas verwenden, weil meine realen Daten fast 500000 Zeilen x 100 Spalten haben. Danke.

Antwort

1

Die Spaltennamen aus den beiden Datenrahmen stimmen nicht überein. Wenn Sie nur die Werte vergleichen möchten, können Sie .values verwenden, um auf das numpy-Array zuzugreifen ein Element weiser Vergleich unabhängig von den Dimensionsnamen/Index zu haben):

pd.DataFrame(df1.values > df2.values, columns=list("ef")).astype(int) 

enter image description here

+0

haben den Trick. Vielen Dank. – shda

Verwandte Themen