我用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