gpt4 book ai didi

python - 剔除一个选定值后选取最大值

转载 作者:行者123 更新时间:2023-12-04 00:16:19 26 4
gpt4 key购买 nike

我有一个大型数据集(3 亿行),我需要一个高效(或快速)的算法来完成这项工作。所以这里有几行数据集。

db = pd.DataFrame({'A': [2,3,4,5], 'T': [1,2,6,7], 'G': [8, 1, 4, 6], 
'C': [1,1 , 3, 4], 'basecall' : ['G', 'A', 'G', 'T']})

我需要一个新列 (max_eliminate),它是通过消除 basecall 列中的相应值然后找到其余三个值的最大值来计算的.因此对于第一行,basecall 为“G”,在消除相应的值后,即为 8,其余三个值为 2、1、1。 max_eliminate 列将选择这些值中的最大值,即这一行的 2。

db_new = pd.DataFrame({'A': [2,3,4,5], 'T': [1,2,6,7], 'G': [8, 1, 4, 6], 
'C': [1,1 , 3, 4], 'basecall' : ['G', 'A', 'G', 'T'],
'max_eliminate' : [2, 2, 6, 6]})

我将一次读取 100 万行的数据集

最佳答案

使用 DataFrame.lookup根据 db['basecall'] 中的列查找值,然后使用 DataFrame.filter选择除 basecall 之外的列并使用 DataFrame.mask屏蔽查找值,即 s,最后使用 DataFrame.max沿 axis=1:

s = db.lookup(db.index, db['basecall'])
db['max_eliminate'] = db.filter(regex='^(?!basecall)')\
.mask(lambda x: x.eq(s, axis=0)).max(1)

结果:

   A  T  G  C basecall  max_eliminate
0 2 1 8 1 G 2.0
1 3 2 1 1 A 2.0
2 4 6 4 3 G 6.0
3 5 7 6 4 T 6.0

关于python - 剔除一个选定值后选取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63601881/

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