2013-04-09 53 views
1

我有一个数组,下面的格式的:最小化与公共值的行,列添加额外的值

564387.29 7371625.14 0.00 33030.00 -132.96 -1031.50 

564387.29 7371625.14 0.00 1530.00  -133.85 -1039.27 

564387.29 7371625.14 0.00 47970.00 -138.35 -1044.40 

564387.32 7371625.14 0.00 47970.00 -166.41 -999.27 

564387.32 7371625.14 0.00 33030.00 -241.74 -1889.71 

564387.32 7371625.14 0.00 1530.00  -135.42 -857.31 

564387.35 7371625.14 0.00 33030.00 -174.06 -990.66 

564387.35 7371625.14 0.00 1530.00  -178.17 -927.11 

564387.35 7371625.14 0.00 47970.00 -116.65 -1810.97 

我使阵列的熊猫数据帧,并且基于,2和列1 4对它们进行排序:

564387.29 7371625.14 0.00 1530.00  -133.85 -1039.27 

564387.29 7371625.14 0.00 33030.00 -132.96 -1031.50 

564387.29 7371625.14 0.00 47970.00 -138.35 -1044.40 

564387.32 7371625.14 0.00 1530.00  -135.42 -857.31 

564387.32 7371625.14 0.00 33030.00 -241.74 -1889.71 

564387.32 7371625.14 0.00 47970.00 -166.41 -999.27 

564387.35 7371625.14 0.00 1530.00  -178.17 -927.11 

564387.35 7371625.14 0.00 33030.00 -174.06 -990.66 

564387.35 7371625.14 0.00 47970.00 -116.65 -1810.97 

的最后一步是通过添加额外4列变量以减少的行数,以得到如下:

564387.29 7371625.14 0.00 1530.00 -133.85 -1039.27 -132.96 -1031.50 -138.35 -1044.40 

564387.32 7371625.14 0.00 1530.00 -135.42 -857.31  -241.74 -1889.71 -166.41 -999.27 

564387.35 7371625.14 0.00 1530.00 -178.17 -927.11  -174.06 -990.66  -116.65 -1810.97 

但我似乎无法找到一个办法 - 我看着许多numpy的和熊猫讨论,不能得到任何想法

回答

2
  1. 它根据具体colomns
  2. 集团他们,然后运用我们的定制功能排序

以下是例子:

In [121]: def func(df): 
    .....:  df = df.reset_index(drop=True) 
    .....:  s = [df.ix[0][3]] 
    .....:  for index, rw in df.iterrows(): 
    .....:   s.append(rw[4]) 
    .....:   s.append(rw[5]) 
    .....:  return pd.Series(s) 
    .....: 

In [122]: df.sort([0, 1, 3]).reset_index(drop=True).groupby([0, 1, 2]).apply(func) 
Out[122]: 
          0  1  2  3  4  5  6 
0   1   2               
564387.29 7371625.14 0 1530 -133.85 -1039.27 -132.96 -1031.50 -138.35 -1044.40 
564387.32 7371625.14 0 1530 -135.42 -857.31 -241.74 -1889.71 -166.41 -999.27 
564387.35 7371625.14 0 1530 -178.17 -927.11 -174.06 -990.66 -116.65 -1810.97 
0

@waitingkuo感谢,这将产生我想要的东西;我试图使用它与我的实际数据,有更多的行需要转换为列(每个数据集总共7行,如在例子中只有3行),现在我得到这种格式:

564387.29 7371625.14 0 0 1530.00000

     1  -133.84641 

         2 -1039.27338 

         3  -133.48476 

         4 -1036.76991 

         5  -307.65603 

         6 -1747.01828 

         7  -132.95704 

         8 -1031.49587 

         9  -138.35364 

         10 -1044.39817 

         11 -119.70329 

         12 -981.84015 

         13  -89.65443 

         14 -919.83924 

...

看起来一切都交给分组作品,然后将行不会追加...