我用KDTree创建了多维数组,在一组A点的5 cm范围内找到最多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
所以,我想在熊猫中结束这样的事情:
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 :(得分:0)
这应该有效 - 您必须弄清楚如何在最后处理列命名。不确定你是否想要保留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