基于另一列中的前几行数据计算Pandas中的列值

2024-09-26 22:49:18 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个表,有两列:日期和金额。行数不超过3000

行日期金额

2021年5月15日248

2021年5月16日115

3 2021年5月17日387

4 2021年5月18日214

52019/05/2021678

2021年5月6日20 489

2021年5月7日875

2021年5月8日123

我需要添加第三列,它将根据Amount列计算修剪平均值

我将使用这个函数:my_table['TrimMean']=stats.trim_mean(my_table['Amount'],0.1),但适合我的问题

问题在于,这不是一个固定范围,而是一个动态范围,遵循以下逻辑:对于我表格中的每一行,修剪平均值将基于金额列的前90个值计算,从当前行上方的行开始。如果少于90个值,则使用任何可用行数进行计算

例如,TrimMean[1000]=统计数据trim_-mean(包含第910行到第999行值的列金额数组)TrimMean[12]=统计数据trim_-mean(包含第1行到第11行值的列金额数组)

希望这是有道理的

有没有什么方法可以用一种简单的方法来计算,而不用逐行迭代


Tags: 方法函数mystatstable数组mean金额
1条回答
网友
1楼 · 发布于 2024-09-26 22:49:18

我们可以通过在大小为90min_periods=1rolling窗口上应用函数来计算trim_mean

from scipy.stats import trim_mean

df['Amount'].rolling(90, min_periods=1).apply(trim_mean, args=(0.1, )).shift()

0           NaN
1    248.000000
2    181.500000
3    250.000000
4    241.000000
5    328.400000
6    355.166667
7    429.428571
Name: Amount, dtype: float64

相关问题 更多 >

    热门问题