Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.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_Python 3.x_Pandas_Data Science - Fatal编程技术网

Python 当数据点也有起点/终点时,使用熊猫检索具有给定起点/终点的数据的有效方法是什么?

Python 当数据点也有起点/终点时,使用熊猫检索具有给定起点/终点的数据的有效方法是什么?,python,python-3.x,pandas,data-science,Python,Python 3.x,Pandas,Data Science,我目前正在开发一个利用基因组计数数据的应用程序。该数据被加载到数据帧中。此数据的示例如下所示: 色度 铬起动 铬酸盐 高度 chr3 93504854 93504940 0 chr3 93504940 93504977 1. chr3 93504977 93505016 2. chr3 93505016 93505018 1. chr3 93505018 93505053 2. chr3 93505053 93505093 1. chr3 93505093 93505151 0 chr3 935

我目前正在开发一个利用基因组计数数据的应用程序。该数据被加载到数据帧中。此数据的示例如下所示:

色度 铬起动 铬酸盐 高度 chr3 93504854 93504940 0 chr3 93504940 93504977 1. chr3 93504977 93505016 2. chr3 93505016 93505018 1. chr3 93505018 93505053 2. chr3 93505053 93505093 1. chr3 93505093 93505151 0 chr3 93505151 93505227 1. chr3 93505227 93505252 0 chr3 93505252 93505328 1.
下面是使用pandas系列中的函数的解决方案。在排序的序列中,它告诉您应该将传递的值放在何处以保持数据排序

在您的数据上使用您的函数,我得到:

chrom = 'chr3'
start = 93504854
end = 93505053
df = df.sort_values(['chrom','chromStart','chromEnd'])
df.apply(checkInBounds, axis=1, args=(chrom, start, end))

    0     True
    1     True
    2     True
    3     True
    4     True
    5     True
    6    False
    7    False
    8    False
    9    False
下面是搜索排序的函数

def checkInBounds_new(df, start, end, chrom):
    bound1 = df.chromStart.searchsorted(start)
    bound2 = df.chromStart.searchsorted(end)
    df =  df.loc[bound1:bound2]
    return df[df['chrom'] == chrom]
checkInBounds_new(df, start, end, chrom):
这给了你:

chrom   chromStart  chromEnd    height
0   chr3    93504854    93504940    0
1   chr3    93504940    93504977    1
2   chr3    93504977    93505016    2
3   chr3    93505016    93505018    1
4   chr3    93505018    93505053    2
5   chr3    93505053    93505093    1

请注意,这两个函数基本上都返回这些输入的前5行。另外,我没有在这里执行任何检查,比如确保end>start等等。

检查df.apply()的更快替代方法