如何连接两行Astropy表?

时间:2016-03-10 18:48:20

标签: astropy

我创建了一个Astropy Table' specs'有列'路径'和'文件名'。
这是第一行:

 path                    filename   
 string192              string256
------------------------ --------------------------------     
 RCS0327/KnotB/        rcs0327-knotB-combwC1.txt 

我想连接这两列。

 for ii, dum in enumerate(specs['filename]') :
    specs['filename'][ii] =  str(specs['path'][ii]) + str(specs['filename'][ii])

因为它截断了文件名而失败了。我究竟做错了什么?对于表来说,这似乎是一个简单的操作。

2 个答案:

答案 0 :(得分:1)

详细,但有效。人们不能只写入specs ['filename'],因为它是一个设置宽度并将截断。而是创建一个新列,并将其交换。

temp = []
for ii, dum in enumerate(specs['filename']):
    filename_w_path = str(specs['origdir'][ii]) + str(specs['filename'][ii])
    temp.append(filename_w_path)
temp_col = Column(temp, name='fullname')
specs.add_column(temp_col)   # Make a column of the fullname, with path
specs.rename_column('filename', 'old_filename')
specs.rename_column('fullname', 'filename')

答案 1 :(得分:1)

从astropy 1.1开始,表上有replace_column方法。因此,您可以在一行或两行实际代码中执行此操作。例如:

In [11]: t
Out[11]: 
<Table length=3>
 a    b  
str1 str1
---- ----
   a    b
   b    c
   c    d

In [12]: temp = [row['a'] + row['b'] for row in t]

In [13]: temp
Out[13]: ['ab', 'bc', 'cd']

In [14]: t.replace_column('a', temp)

In [15]: t
Out[15]: 
<Table length=3>
 a    b  
str2 str1
---- ----
  ab    b
  bc    c
  cd    d