You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pd.append批量应用自定义join_ppi函数失败,求技术帮助

解决方法

首先明确:pd.append是用来合并DataFrame/Series的工具,根本不适合批量处理每行生成新值的场景,你用错方法了。下面给两种正确的实现方式:

方法一:修改函数后用apply处理每行

重写你的函数,让它直接接收每行的Series对象(而非行号),再用df.apply(axis=1)批量应用:

def join_ppi(row):
    if row["taxidA"] == '9606':
        return f"{row['prot1']}:{row['prot2']}"
    else:
        return f"{row['prot2']}:{row['prot1']}"

# 生成新列存储拼接结果
DF['ppi_joined'] = DF.apply(join_ppi, axis=1)

这样apply会自动遍历DF的每一行,把每行数据传给join_ppi函数,无需手动用行号索引全局DF,逻辑更清晰也更安全。

方法二:矢量化操作(推荐,效率更高)

如果你的数据集较大,推荐用numpy.where实现矢量化条件判断,避免逐行循环的开销:

import numpy as np

DF['ppi_joined'] = np.where(
    DF['taxidA'] == '9606',
    DF['prot1'] + ':' + DF['prot2'],
    DF['prot2'] + ':' + DF['prot1']
)

这种方式是pandas官方推荐的高效处理方式,底层用C实现运算,比apply快数倍甚至数十倍。

内容的提问来源于stack exchange,提问作者Aravind Suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:40:23