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

Pandas对DataFrame应用函数时出现axis相关报错如何解决?

报错原因
  • 核心问题是test_df.apply(..., axis=1)遍历每一行时,传入vanilla_vec_similarity的第一个参数x是Series类型,不是DataFrame。Series只有行索引(axis=0),不存在列轴(axis=1),所以调用x.drop('request_id', axis=1)时会直接触发axis不存在的报错。
  • 次要问题:代码中drop方法使用inplace=True时返回值为None,后续链式调用.values会触发属性不存在报错,只是当前axis错误先被抛出,还没走到这一步。
  • 额外隐藏问题:test_vec是单行DataFrame,未处理成一维数组的话,和Series转成的数组做等值判断时会出现形状不匹配的问题。
修复方案

修改函数逻辑、移除inplace用法,提前处理固定的对比向量即可,参考代码如下:

import pandas as pd
import numpy as np

def vanilla_vec_similarity(x, y_arr):
    # 直接过滤掉request_id字段,无需修改原对象、无需指定axis
    x_arr = x.drop('request_id').values
    return (x_arr == y_arr).mean()


test_df = pd.DataFrame({'request_id': [55, 42, 13], 'a': ['x','y','z'], 'b':[1,2,3], 'c': [1.0, -1.8, 19.113]})
test_vec = pd.DataFrame([[123,'x',1.1, -1.8]], columns=['request_id', 'a', 'b', 'c'])
# 提前把对比向量处理成一维数组,避免每次apply重复计算
test_vec_arr = test_vec.drop('request_id', axis=1).values.flatten()

test_df['similarity'] = test_df.apply(lambda x: vanilla_vec_similarity(x, test_vec_arr), axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:36:03