在pandas中为多维KDTree输出赋值



我用KDTree创建了多维数组,从一组a点的5厘米内找到多达100个B点。

我为数组的每一行留下了多达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

那么,我想在pandas中以这样的方式结束:

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

最快的方法是什么?

非常感谢!

这应该可以工作-您必须弄清楚如何在最后处理列命名。不确定是否要保留nan值,你必须先替换它们,它们在堆叠中丢失了。

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