Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取数据帧时索引超出范围_Python_Pandas_Indexing - Fatal编程技术网

Python 读取数据帧时索引超出范围

Python 读取数据帧时索引超出范围,python,pandas,indexing,Python,Pandas,Indexing,我有一个选项卡分隔的文件,我正在尝试解析该文件,为此,我正在执行以下操作: 我的文件头: 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 = cou

我有一个选项卡分隔的文件,我正在尝试解析该文件,为此,我正在执行以下操作:

我的文件头:

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
回溯(最近一次呼叫最后一次):
文件“test.py”,第203行,在
主(args)
文件“test.py”,第71行,在main中
前景参考计数、前景变量计数=获取前景计数(色度、坐标、计数、参考基数、变量基数)
文件“test.py”,第137行,在get_前台_计数中
前景计数=前景计数[ref\u base]。值[0]
索引器:索引超出范围
知道为什么吗

谢谢

更新

  • 当我尝试打印前台计数[ref\u base]时,我得到的值是
    []
  • 我传递给函数的是chrom(string)、coord(string)、counts(panda dataframe)、ref_base(string)、var_base(string))

在函数中,过滤器返回的行数为零,因此会出现错误。您似乎忘记了函数第一行中的
.astype(str)


您可以在调用函数之前强制转换列类型,也可以修改该行。如果您真的需要使用字符串类型,则前者将是一种更好的方法,否则为什么不使用整数值进行比较?

在错误发生之前打印
前台计数[ref\u base]会得到什么?值
会传递什么函数。。。Christian和Andy我更新了回答你问题的问题扫描你能把它编辑成一个可复制的例子吗?显示您传递给函数的具体值,根据提供的内容,您的
chrome
chord
似乎不存在于数据帧中。谢谢@Rho,是的,就是这样,使用int进行比较确实解决了我的问题,非常感谢