如何使用Pandas计算多列中High-Low差值的按索引均值?
用Pandas实现按索引计算High与Low差值均值的方法
当然可以用Pandas轻松搞定这个需求!我来给你拆解一下具体怎么做,根据你的DataFrame结构不同,有几种常见的实现方式:
情况1:DataFrame含High和Low列,按索引分组计算差值均值
假设你的DataFrame是时间序列类的,索引是日期,每一行对应一天的High和Low数据,结构大概是这样:
High Low 2023-01-01 100 95 2023-01-02 102 97 2023-02-01 105 99 2023-02-02 107 101
如果要按月份(索引的月份维度)分组,计算每个月内每日High-Low差值的均值,步骤如下:
- 先计算每行的High与Low的差值,生成新列:
df['diff'] = df['High'] - df['Low'] - 按索引分组并计算均值:
# 若索引是datetime类型,按月份分组 monthly_mean_diff = df['diff'].groupby(df.index.month).mean() # 若索引是自定义分组键,直接按索引分组 mean_diff_by_index = df['diff'].groupby(df.index).mean()
情况2:索引是High/Low标识,每列对应不同变量
如果你的DataFrame索引是High或Low,每一列对应一个资产/变量,结构类似这样:
AssetA AssetB High 150 200 Low 140 185 High 155 210 Low 142 190
要计算每一列中High与Low的差值均值,可以这么做:
- 先按索引分组,计算每组(High组、Low组)的均值:
grouped = df.groupby(df.index).mean() - 再用High组的均值减去Low组的均值,得到每列的差值均值:
col_mean_diff = grouped.loc['High'] - grouped.loc['Low']
通用简化写法
如果你的需求是直接计算所有行的High-Low差值的整体均值,或者按索引分组后的每个分组的差值均值,还可以用更简洁的写法:
# 计算所有行的High-Low差值的整体均值 overall_mean_diff = (df['High'] - df['Low']).mean() # 按索引分组,计算每个分组的差值均值 mean_diff_per_index = (df['High'] - df['Low']).groupby(df.index).mean()
这些方法都能完美实现你的需求,你可以根据自己的DataFrame结构选对应的代码就行~
内容的提问来源于stack exchange,提问作者이승훈
相关产品推荐
相关产品推荐

