我正在尝试通过从命令行输入列索引来合并2个文件。我使用了较旧Mac上的相同脚本和测试文件,并且以前没有出现问题。现在,在这台新计算机上,它无法正常工作并给我错误:IndexError:仅整数,切片(:
),省略号(...
),numpy.newaxis(None
)和整数或布尔数组是有效索引
import argparse
将熊猫作为pd导入 导入csv
def parse_args():
parser = argparse.ArgumentParser(description='Simple code to combine 2 fold change files with 4 columns each: "GeneID", "Biotype", "GeneName" , "FoldChange" ')
parser.add_argument('-f1','--file1', type=str, required=True,
help='First file')
parser.add_argument('-f2','--file2', type=str, required=True,
help='Second file')
parser.add_argument('-c1','--col1', type=str, required=True,
help='Number of column for f1 for merger')
parser.add_argument('-c2','--col2', type=str, required=True,
help='Number of column for f2 for merger')
parser.add_argument('-m','--method', type=str, required=True,
help="method {left: use only keys from left frame ; right: use only keys from right frame; outer: use union of keys from both frames; inner: use intersection of keys from both frames}")
parser.add_argument('-o','--output', type=str, required=True, default="",
help='Output Dataframe without extension {MergedDf}')
args = parser.parse_args()
return args
def main():
args = parse_args()
df1 = pd.read_table(args.file1, sep="\t" )
df2 = pd.read_table(args.file2, sep="\t")
merged = df1.merge(df2, left_on=df1.columns[args.col1], right_on=df2.columns[args.col2], how=args.method)
merged.to_csv(args.output+".xls", sep="\t", index=False, na_rep="NA")
merged.to_excel(args.output+".xlsx", index=False, na_rep="NA")
如果名称 ==“ 主要”: 尝试: main()
except:
print("Unknown Error")
raise
我的命令行是:
python Merge2Files.v1.py -f1 mapped_mm9tomm10LiftOver.xls -f2 lincs-mm9-hg19.xls -o test -c1 3 -c2 0 -m left
两个文件分别在第4列和第1列具有共享条目。但是,我得到了错误
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
有什么想法为什么会导致错误?在使用相同的“测试”文件之前,它就像是一种魅力。