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

Python中基于DataFrame统计各Symbol的预测次数与成功预测次数

解决方案

要生成你需要的df3,用pandas的分组聚合功能就能高效完成,代码如下:

import pandas as pd

# 先模拟原数据方便验证(如果你的df1已经存在,这部分可以跳过)
data = {
    'SYMBOL': ['ABC', 'DEF', 'GHI', 'ABC'],
    'prediction_succesful': ['Y', 'Y', 'Y', pd.NA],
    'DATE': ['29-03-2018', '30-03-2018', '01-04-2018', '30-03-2018'],
    'VALUE': [100, 96, 105, 55]
}
df1 = pd.DataFrame(data)

# 生成df3的核心代码
df3 = df1.groupby('SYMBOL').agg(
    no_of_predictions=('SYMBOL', 'size'),
    no_of_succesful_predictions=('prediction_succesful', lambda x: (x == 'Y').sum())
).reset_index().rename(columns={'SYMBOL': 'symbol'})

print(df3)

代码解释:

  • groupby('SYMBOL'):按股票代码分组,把相同SYMBOL的行归为一组
  • agg(...):对每组做聚合计算:
    • no_of_predictions=('SYMBOL', 'size'):统计每组的总行数,也就是每个Symbol的总预测次数
    • no_of_succesful_predictions=('prediction_succesful', lambda x: (x == 'Y').sum()):遍历每组的prediction_succesful列,统计值为'Y'的数量(NaN会自动被排除,因为NaN == 'Y'返回False,不会计入总和)
  • reset_index():把分组用的SYMBOL从索引转为普通列
  • rename(columns={'SYMBOL': 'symbol'}):把列名改成你要求的小写symbol

运行后df3的结果是:

symbol  no_of_predictions  no_of_succesful_predictions
0    ABC                  2                            1
1    DEF                  1                            1
2    GHI                  1                            1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:59:56