如何基于Pandas DataFrame的列条件将count列替换为NaN
Pandas DataFrame按条件替换count列为NaN的解决方案
需求
根据sequence列(含字母)或substitute列的条件,将count列中的指定值(示例为O)替换为NaN。
原始数据
IDS sequence substitute count header1 GCTCAGCTGGCtAGAG NAN O header1 >>>>........<<<< < 4
期望输出
IDS sequence substitute count header1 GCTCAGCTGGCtAGAG NAN NaN header1 >>>>........<<<< < 4
尝试后异常输出
参考相关方法后得到不符合预期的结果:
ids sequence Count count 0 header1 GCTCAGCTGGCtAGAG 0 NaN 1 header1 >>>>.........<<<< 0 3
正确实现方法
方法一:直接替换count列的目标值
如果需求是当count列的值为O时替换成NaN,直接用replace方法最简洁:
import pandas as pd import numpy as np # 构造原始DataFrame df = pd.DataFrame({ 'IDS': ['header1', 'header1'], 'sequence': ['GCTCAGCTGGCtAGAG', '>>>>........<<<<'], 'substitute': ['NAN', '<'], 'count': ['O', 4] }) # 将count列中的'O'替换为NaN df['count'] = df['count'].replace('O', np.nan)
方法二:基于sequence/substitute列的条件替换
如果需求是当sequence列包含字母,或者substitute列满足特定条件时,将count列设为NaN,使用布尔索引实现:
# 定义条件:sequence包含大小写字母,或者substitute的值为'NAN' condition = df['sequence'].str.contains('[a-zA-Z]', regex=True) | (df['substitute'] == 'NAN') # 对满足条件的行,将count列赋值为NaN df.loc[condition, 'count'] = np.nan
运行上述代码后即可得到符合预期的输出。
内容的提问来源于stack exchange,提问作者Pandu C
相关产品推荐
相关产品推荐

