如何结合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
相关产品推荐
相关产品推荐

