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

如何在Pandas中用当前行median值处理mean_values列表生成new_list列

Pandas按行计算列表元素与对应median的绝对值差

问题分析

你之前的代码错误在于:仅对mean_values列单独使用apply,在map中传入的table['median']是整个列的数据集,导致mean_values列表里的第n个元素会匹配median列的第n行值,而非当前行的median,所以只有第一个元素计算正确,后续元素用了其他行的中位数。

解决方案

需要针对DataFrame的每一行进行整体处理,同时获取当前行的mean_values列表和median值,再对列表内元素逐一计算绝对值差。

方法一:自定义行处理函数

import pandas as pd

# 构造示例数据
table = pd.DataFrame({
    'mean_values': [[2,2,3,6,7], [1,4,5], [8,2]],
    'median': [3, 4, 5]
})

def process_row(row):
    # 获取当前行的中位数
    current_median = row['median']
    # 遍历列表计算每个元素与中位数的差的绝对值
    return [abs(num - current_median) for num in row['mean_values']]

# 按行应用函数,axis=1表示按行处理
table['new_list'] = table.apply(process_row, axis=1)

方法二:简化为lambda表达式

如果不想单独定义函数,也可以用一行lambda实现:

table['new_list'] = table.apply(lambda row: [abs(num - row['median']) for num in row['mean_values']], axis=1)

验证结果

运行后示例DataFrame的new_list列会得到:

  • 第一行:[1,1,0,3,4]
  • 第二行:[3,0,1]
  • 第三行:[3,3]
    完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:12:44