2016-11-02 2 views
0

Ich habe mehrdimensionale Arrays mit KDTree erstellt, indem ich bis zu 100 B-Punkte innerhalb von 5 cm einer Menge von A-Punkten gefunden habe.Mehrdimensionale KDTree-Ausgabe in Pandas zuweisen

Ich habe bis zu 100 Werte für jede Zeile meines Arrays. Zum Beispiel:

0 0.1 0.5 nan nan nan nan nan 
1 0.4 0.2 0.1 2.0 6.0 0.2 0.2 
2 0.3 nan 0.3 nan nan nan nan 
3 0.2 0.5 0.6 5.0 nan nan nan 

Ich möchte im wesentlichen alle der Feldwerte abzuflachen eine große Spalte mit Werten haben, aber ich will ein Attribut Spalte assoziieren I mit allen Werten in jeder Reihe haben:

0 0.1 0.5 nan nan nan nan nan A 
1 0.4 0.2 0.1 2.0 6.0 0.2 0.2 B 
2 0.3 nan 0.3 nan nan nan nan A 
3 0.2 0.5 0.6 5.0 nan nan nan C 

Also, ich möchte mit so etwas wie dies in Pandas am Ende:

0.1 A 
0.5 A 
nan A 
nan A 
nan A 
0.4 B 
0.2 B 
0.1 B 
2.0 B 
6.0 B 
0.2 B 
0.2 B 
0.3 A 
nan A 
0.3 A 
nan A 
nan A 
nan A 
nan A 
0.2 C 
0.5 C 
0.6 C 
5.0 C 
nan C 
nan C 
nan C 

Was ist der schnellste Weg, dies zu tun?

Vielen Dank !!

Antwort

0

Dies sollte funktionieren - Sie müssen herausfinden, wie die Spaltenbenennung am Ende behandelt wird. Nicht sicher, ob du Nan Werte behalten willst, du musst sie zuerst ersetzen, sie gehen in der Stapelung verloren.

import pandas as pd 

df = pd.DataFrame([[1,2,np.nan,'A'],[5,np.nan,np.nan,'B']], columns = ['col1','col2','col3','feature']) 
df = df.reset_index().set_index(['index','feature']) 
df = df.stack().to_frame().reset_index().drop(['index','level_2'],axis = 1) 
print df 



feature 0 
0  A 1.0 
1  A 2.0 
2  B 5.0 
+0

Okay, also habe ich df.stack() verwendet und es hat gut funktioniert. Ich habe immer noch eine Index-Spalte (was in Ordnung ist) und eine 0-Spalte mit allen Werten. Die Spalte 0 enthält jedoch weiterhin die Attributspalte. Also ist die Spalte ### 'Attribut' ###, und ich muss diese Attribute in einer zweiten Spalte trennen. – brainier7

+0

Haben Sie den Code so kopiert, wie ich ihn habe? In dem obigen Beispiel haben Sie einen Index (den Sie immer haben werden), die Spalte "Feature" und eine Spalte "0", die Ihre Werte sind. Ich bin mir nicht sicher, mit was Sie es zu tun haben - können Sie den Code, den Sie ausführen, und das Ergebnis, das Sie bekommen, posten? – flyingmeatball

Verwandte Themen