gpt4 book ai didi

python - 如何选择在 Pandas 数据框中持续存在的数据

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:02 28 4
gpt4 key购买 nike

我有一个 Pandas 数据框,其中包含有关突变的数据,相关位如下(0/0 = 无突变,0/1 = 杂合突变,1/1 = 纯合突变)。在进行的实验中,我们进行了超过 5 代的处理(紫外线照射)。我只对出现并持续多代的突变感兴趣(即,不会及时丢失),无论是杂合子 (0/1) 还是纯合子 (1/1)。

例如,第一行(索引 0)中的数据应该保留,即使它只出现在最后一列中。索引的第 5、7、9 和 10 行也应保留,因为它们在出现后会在所有世代中持续存在。

我真的不知道如何开始着手这件事。也许在循环 df 时可以使用一系列 if 语句,但这不是很可取,是吗?

index   GEN[0].GT   GEN[1].GT   GEN[2].GT   GEN[3].GT   GEN[4].GT
0 0/0 0/0 0/0 0/0 1/1
1 0/0 0/0 0/1 0/0 0/0
2 0/0 0/1 0/0 0/1 0/0
3 0/0 0/1 0/0 0/1 0/0
4 0/0 0/1 0/0 0/1 0/1
5 0/0 0/0 1/1 1/1 1/1
6 0/0 0/0 0/0 1/1 0/0
7 0/0 0/0 0/0 1/1 1/1
8 0/0 0/0 0/0 1/1 0/0
9 0/0 0/0 0/0 1/1 1/1
10 0/0 0/1 0/1 0/1 0/1

最佳答案

根据 MattR 的观察,我假设索引列确实是索引,而不是常规列。

让我们从用 np.nan 替换无突变标记 0/0 开始。当您向前填充新数据帧的行时,nan 间隙将被最近的非 nan 值填充:

filled = df.replace('0/0', np.nan).fillna(method='ffill', axis=1).fillna("0/0")

与原始行不同的填充行没有间隙。因此,他们在非0/0之后没有0/0:

good = (filled == df).all(axis=1)

这是他们的数字:

df[good].index
#Int64Index([0, 5, 7, 9, 10], dtype='int64', name='index')

关于python - 如何选择在 Pandas 数据框中持续存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630182/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com