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

如何结合scipy在pandas中计算dataframe行内容的截尾均值

解决方案

你可以直接在现有代码基础上结合scipy实现需求,无需手动编写截尾处理逻辑,仅需将链式调用末尾的.mean()替换为apply()调用stats.trim_mean即可。


完整可运行代码

import pandas as pd
import string
from scipy import stats

# 示例数据
test_df = pd.DataFrame({
    '_id': ['1a','2b','3c','4d'],
    'column': ['und der in zu',
                'Kompliziertereswort something',
                'Lehrerin in zu [Buch]',
                'Buch (Lehrerin) kompliziertereswort']
})

test_dict = {
    'und': 20,
    'der': 10,
    'in':  40,
    'zu':  10,
    'Kompliziertereswort': 2,
    'Buch': 5,
    'Lehrerin': 5
}

# 计算截尾均值的代码
test_df['extra_col'] = (test_df['column'].str.split(expand=True)
                                     .stack().astype(str)
                                     .str.strip(string.punctuation)
                                     .map(test_dict)
                                     .astype(float)
                                     .groupby(level=0)
                                     .apply(lambda x: stats.trim_mean(x.dropna(), 0.1)))

代码说明

  • 原有单词拆分、去除标点、字典映射的逻辑完全保留,仅修改了分组后的聚合规则
  • apply中新增x.dropna()是为了过滤不在字典中、映射后为NaN的单词,避免计算报错
  • stats.trim_mean会自动完成两端10%的截尾计算,无需手动排序截断数值
  • 如果某行句子没有匹配到字典中的任何单词,结果会返回NaN,你可以根据需求在链式调用末尾加.fillna(0)等逻辑处理缺失值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:57:04