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

Python按年月分组求后缀_values列标准差最小TopK列,修复TypeError问题

问题修复方案

错误原因

  • 你调用了Python标准库statistics模块的stdev()函数,该函数仅支持输入一维数值序列计算标准差,但你传入的group[value_cols]是包含多列的DataFrame对象,函数无法识别该输入格式,因此抛出类型转换错误。

修复方法

直接使用Pandas自带的.std()方法,该方法默认按列计算DataFrame的标准差,刚好匹配你的需求,无需额外引入标准库的stdev。

修复后完整代码

import pandas as pd
import numpy as np

np.random.seed(2021)
dates = pd.date_range('20130226', periods=90)
df = pd.DataFrame(np.random.uniform(0, 10, size=(90, 6)), index=dates, columns=['A_values', 'B_values', 'C_values', 'D_values', 'E_values', 'target'])

k = 3    # 取前3个标准差最小的列

value_cols = df.columns[df.columns.str.endswith('_values')]

def find_topK_smallest_std(group):
    # 替换为pandas自带的std方法按列计算标准差
    std = group[value_cols].std()
    cols = std.nsmallest(k).index
    out_cols = [f'std_{i+1}' for i in range(k)]
    rv = group.loc[:, cols]
    rv.columns = out_cols
    return rv

result = df.groupby(pd.Grouper(freq='M'), dropna=False).apply(find_topK_smallest_std)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:03