使用Pandas从另一个数据帧中的信息过滤一个数据帧

2024-05-12 19:52:59 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一个数据帧。在

df = pd.DataFrame(columns=['Chromosome', 'Start','End'],
     data=[
           ['chr1', 2000, 3000],
           ['chr1', 500, 1500],
           ['chr3', 3000, 4000],
           ['chr5', 4000, 5000],
           ['chr17', 9000, 10000],
           ['chr19', 1500, 2500]
           ])

我有一个探测数据帧如下。在

^{pr2}$

我想过滤df中包含探针染色体且探针位置介于起始编号和结束编号之间的行,然后将探针名称添加到df中的新列/字段中。所需输出如下:

    Probe    Chrom    Start    End
0   CG999    chr1     2000     3000
5   CG000    chr19    1500     2500

我下面的尝试是可行的,但是没有将探测名称放入探测列中,并且依赖于循环探测数据。必须有一种更有效的方法来做到这一点。在

all_indexes = []

# fake2.tsv is the aforementioned probes dataframe
with open('fake2.tsv') as f:
    for x in f:
        probe, chrom, pos = x.rstrip("\n").split("\t")
        row = df[(df['Chromosome'] == chrom) & ((int(pos) > df['Start']) & (int(pos) < df['End']))]
        all_indexes.append(t.index.tolist())

all_t = [y for x in all_t for y in x]
df.iloc[all_indexes]

Tags: 数据inpos名称dfforallstart