我有一个标签分隔文件,我正在尝试解析,为此我正在这样做:
我文件的标题:
chrom coord ref_base var_base A C G T
17 26695663 G A 1 0 1934 0
17 26695664 T A 1 0 1 1935
我的代码是:
counts = pd.read_csv(args.counts_file, sep='\t')
toto = counts[(counts['chrom'].astype(str) == "17") & (counts['coord'].astype(str) == "26695663")]
print toto["G"].values[0]
此函数返回所需的数字,即1934
现在当我尝试创建一个函数来接受从文件中读取数据帧的参数时,我写了这个函数
def get_foreground_counts(chrom, coord, counts, ref_base, var_base):
foreground_counts = counts[(counts['chrom'] == chrom) & (counts['coord'] == coord)]
foreground_ref_counts = foreground_counts[ref_base].values[0]
foreground_var_counts = foreground_counts[var_base].values[0]
return foreground_ref_counts, foreground_var_counts
我得到了这个错误,我想弄清楚但仍然无法理解为什么
Traceback (most recent call last):
File "test.py", line 203, in <module>
main(args)
File "test.py", line 71, in main
foreground_ref_counts, foreground_var_counts = get_foreground_counts(chrom, coord, counts, ref_base, var_base)
File "test.py", line 137, in get_foreground_counts
foreground_ref_counts = foreground_counts[ref_base].values[0]
IndexError: index out of bounds
知道为什么吗?
由于
更新
[]
答案 0 :(得分:1)
在您的函数中,您的过滤器确实返回零行,这就是您收到错误的原因。您似乎忘记了函数第一行中的.astype(str)
。
您可以在调用函数之前强制转换列类型,也可以修改该行。如果您确实需要使用字符串类型,前者将是更好的方法,否则为什么不使用整数值进行比较?。