我创建了一个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])
因为它截断了文件名而失败了。我究竟做错了什么?对于表来说,这似乎是一个简单的操作。
答案 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