如何创建统计每日MME高于Adj Close资产数量的DataFrame
解决方案
核心思路
按日期分组,统计每日里MME指数平均值高于调整收盘价(Adj Close)的资产数量,最终生成包含日期和对应统计数的新DataFrame。
代码实现
1. 基础版实现(假设原始DataFrame名为df)
import pandas as pd # 若日期列非datetime格式,先做格式转换 df['Date'] = pd.to_datetime(df['Date']) # 按日期分组统计符合条件的资产数 result_df = df.groupby('Date').apply( lambda group: (group['MME'] > group['Adj Close']).sum() ).reset_index(name='MME_Above_AdjClose_Count')
2. 高效版实现(避免apply,性能更优)
import pandas as pd df['Date'] = pd.to_datetime(df['Date']) # 先标记每行是否符合条件,再按日期求和 result_df = df.assign( is_above=df['MME'] > df['Adj Close'] ).groupby('Date')['is_above'].sum().reset_index(name='MME_Above_AdjClose_Count')
代码说明
groupby('Date'):将原始数据按日期聚合,把同一天的所有资产数据归为一组(group['MME'] > group['Adj Close']).sum():对每组数据,判断MME是否大于调整收盘价,生成布尔值序列后求和,得到当日符合条件的资产总数reset_index:将分组后的日期索引转为普通列,并给统计结果列指定名称
内容的提问来源于stack exchange,提问作者Clovis Junior
相关产品推荐
相关产品推荐

