2016-11-02 8 views
0

私は、A点のセットの5cm以内に100点のB点を見つけることから、KDTreeで多次元配列を作成しました。パンダで多次元KDTree出力をアトリビュート

私の配列の各行に100個の値が残っています。たとえば:

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 

私は、基本的な値の一つの大きな柱を持つように配列の値の全てをフラット化したいが、私はそれぞれの行のすべての値を私が持っている属性列を関連付ける:

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 

だから、私はパンダで、このようなもので終わるしたい:

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 

これを行うための最速の方法は何ですか?

ありがとうございます!

答えて

0

これは機能するはずです。最後に列の名前を処理する方法を理解する必要があります。あなたがナノ値を保持したい場合は、最初にそれらを置き換える必要があるかどうかは分かりません。スタッキングでは失われます。

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

私はdf.stack()を使用していましたが、うまくいきました。私はまだインデックスの列(これは問題ありません)とすべての値を持つ0列を持っています。しかし、0列には依然として属性列が含まれています。したがって、列は### '属性' ###であり、これらの属性を2番目の列に分ける必要があります。 – brainier7

+0

私が持っているコードをコピーしましたか?上記の例では、あなたの値である「フィーチャー」列と「0」列のインデックスがあります。あなたが苦労していることが分からない - あなたが実行しているコードとあなたが得ている結果を投稿できますか? – flyingmeatball