Pyfits:更改列名称/格式

时间:2015-01-06 09:53:40

标签: python pyfits

我试图在pyfits中连接文件。因为它们没有正确完成,所以我的输入文件之间的列名和列格式之一不一样,所以我不能使用np.concatenate连接ndarray ......

我想更改列名称(以巧妙的方式)。我在pyfits文档中找到了pyfits.Coldefs.change_name函数(http://pythonhosted.org/pyfits/api_docs/api_tables.html#coldefs),所以这就是我现在正在做的事情:

  

hdu = pyfits.open(myfile,memmap = True)[1]
  new_columns = pyfits.ColDefs(hdu.columns).change_name(prev_name,new_name)

我也尝试过:

  

hdu = pyfits.open(myfile,memmap = True)[1]
  new_columns = pyfits.ColDefs(hdu.columns).change_attrib(prev_name,' names',new_name)

返回None类型对象。我有什么遗失的吗?

由于

2 个答案:

答案 0 :(得分:1)

虽然我之前对这个问题的评论仍然存在,但实际上我已经在Astropy v1.0.2中对此进行了修正,因此这些方法现在基本上可以正常工作(https://github.com/astropy/astropy/pull/3283)。要重命名列,它就像:

一样简单
hdu.columns[prev_name] = new_name

这将在Numpy数组本身重命名该列,并在将表写回FITS时重命名该列。

更改格式并不简单,此时需要创建一个新表。

答案 1 :(得分:0)

在 4.0.1post1 版本中的解决方案

ACCESS_BACKGROUND_LOCATION

不起作用。它抱怨“ColDefs”不支持项目分配。为了解决这个问题,我们需要直接改名:

hdu.columns[prev_name] = new_name