在pandas

时间:2016-11-02 21:54:47

标签: python arrays pandas numpy

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

最快的方法是什么?

非常感谢!!

1 个答案:

答案 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