【发布时间】:2022-01-03 10:02:41
【问题描述】:
使用下面的示例数据和代码,我正在尝试按年分组并在所有以_values 结尾的列中找到具有最小标准值的 top K 列:
import pandas as pd
import numpy as np
from statistics import stdev
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 # set k as 3
value_cols = df.columns[df.columns.str.endswith('_values')]
def find_topK_smallest_std(group):
std = stdev(group[value_cols])
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
df.groupby(pd.Grouper(freq='M'), dropna=False).apply(find_topK_smallest_std)
但是它会引发类型错误,我该如何解决这个问题?提前致以诚挚的感谢。
输出:
TypeError: can't convert type 'str' to numerator/denominator
参考链接:
Groupby year-month and find top N smallest values columns in Python
【问题讨论】:
标签: python-3.x pandas numpy statistics