gpt4 book ai didi

python - 根据列值过滤多索引数据框,删除级别内的所有行

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:48 27 4
gpt4 key购买 nike

我正在尝试根据一个或多个值过滤 DataFrame。这是一个 CSV 示例:

AlignmentId,TranscriptId,classifier,value
ENSMUST00000025010-1,ENSMUST00000025010,AlnCoverage,0.99612
ENSMUST00000025010-1,ENSMUST00000025010,AlnIdentity,0.93553
ENSMUST00000025010-1,ENSMUST00000025010,Badness,0.06749
ENSMUST00000025014-1,ENSMUST00000025014,AlnCoverage,1.0
ENSMUST00000025014-1,ENSMUST00000025014,AlnIdentity,0.96382
ENSMUST00000025014-1,ENSMUST00000025014,Badness,0.03618

加载时:

>>> df = pd.read_csv('tmp.csv', index_col=['AlignmentId', 'TranscriptId'])
>>> df
classifier value
AlignmentId TranscriptId
ENSMUST00000025010-1 ENSMUST00000025010 AlnCoverage 0.99612
ENSMUST00000025010 AlnIdentity 0.93553
ENSMUST00000025010 Badness 0.06749
ENSMUST00000025014-1 ENSMUST00000025014 AlnCoverage 1.00000
ENSMUST00000025014 AlnIdentity 0.96382
ENSMUST00000025014 Badness 0.03618

我想删除每个 AlignmentId未能通过一系列 classifiers 的组.对于这个例子,假设我想删除 ENSMUST00000025010因为AlnCoverage < 1.0 .因此,我想以这个数据框结束:

ENSMUST00000025014-1 ENSMUST00000025014  AlnCoverage  1.00000
ENSMUST00000025014 AlnIdentity 0.96382
ENSMUST00000025014 Badness 0.03618

我该怎么做?

最佳答案

试试这个:

In [169]: df = df.drop(df[(df.classifier=='AlnCoverage') & (df.value < 1)].index)

In [170]: df
Out[170]:
classifier value
AlignmentId TranscriptId
ENSMUST00000025014-1 ENSMUST00000025014 AlnCoverage 1.00000
ENSMUST00000025014 AlnIdentity 0.96382
ENSMUST00000025014 Badness 0.03618

关于python - 根据列值过滤多索引数据框,删除级别内的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39520362/

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