首页 > 解决方案 > 尝试在 astropy 中加入表但出现参数错误

问题描述

我有三张表,seric、mass 和 magphys。每个都是相当大的表,我希望将它们合并为一个,使用 ID (CATAID) 作为参考。但是,当我使用以下内容时:

import matplotlib.pyplot as plt
from astropy.io import ascii
import numpy as np
from scipy.stats import kstest
from scipy.stats import ks_2samp
from scipy.stats import anderson
from scipy.stats import anderson_ksamp


import pandas as pd
from astropy.table import Table, join
import urllib.request

导入我的所有信息,然后从文件中下载并命名我的各个表:

sersic = Table.read('Sersic.fits', format='fits')
mass = Table.read('StellarMass.fits', format='fits')
magphys = Table.read('MagPhys.fits', format='fits')

然后尝试使用 CATAID 列(每个表中的第一个,dtype int32)形成第四个连接表:

gama = join(sersic, mass, magphys, keys='CATAID')

我收到一条错误消息

"---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-c200aeac718e> in <module>
----> 1 gama = join(sersic, mass, magphys, keys='CATAID')

TypeError: join() got multiple values for argument 'keys'.

如何修复这个多参数错误并形成名为“gama”的单个表?

如果我不能将所有三个表合并为一个,我如何至少加入两个,例如 sersic 和 mass?

标签: pythonjoinkeyastropy

解决方案


Tablejoin方法需要两个表作为前两个参数,一个要连接的左表和右表。有关如何调用的示例和信息,请参阅https://docs.astropy.org/en/stable/table/operations.html#joinjoin

您可以通过连接前两个表,然后将该结果连接到第三个表来连接三个表。

您看到的错误是因为keys是加入的第三个参数,所以它认为您提供keys了两次。


推荐阅读