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

如何基于另一列的min/max聚合列值?Pandas做市商日期分组处理

解决方案:按日期聚合做市商数据并提取关键做市商名称

需求回顾

  • 基于含1000+行的DataFrame,按date聚合计算每日bid/ask均价
  • 提取当日bid价格最高、ask价格最低的做市商名称,以逗号拼接成新列
  • 最终用Plotly实现数据可视化

高效实现代码

1. 数据聚合与关键做市商提取

避免低效的循环遍历,直接用groupby结合自定义聚合逻辑批量处理:

import pandas as pd

# 替换为你的原始DataFrame
data = {
    'date': ['01/07/22', '01/07/22', '01/07/22', '02/07/22', '03/07/22', '03/07/22', '03/07/22', '03/07/22', '04/07/22', '04/07/22'],
    'mkt': ['LWAPO', 'HUYNE', 'VERAS', 'HUYNE', 'LWAPO', 'VERAS', 'PLAIN', 'ALCOT', 'HUYNE', 'LWAPO'],
    'bid': [0.6451, 0.6452, 0.6447, 0.6432, 0.6440, 0.6441, 0.6440, 0.6445, 0.6431, 0.6439],
    'ask': [0.6460, 0.6458, 0.6457, 0.6435, 0.6442, 0.6444, 0.6445, 0.6449, 0.6444, 0.6441]
}
df = pd.DataFrame(data)

# 按日期聚合,同时计算均价和拼接关键做市商
agg_result = df.groupby('date').apply(
    lambda group: pd.Series({
        'avg_bid': group['bid'].mean(),
        'avg_ask': group['ask'].mean(),
        'mkt': f"{group.loc[group['bid'].idxmax(), 'mkt']}, {group.loc[group['ask'].idxmin(), 'mkt']}"
    })
).reset_index()

# 输出预期格式的结果
print(agg_result[['date', 'mkt']])

执行后输出与预期完全匹配:

date           mkt
0  01/07/22  HUYNE, VERAS
1  02/07/22  HUYNE, HUYNE
2  03/07/22  ALCOT, VERAS
3  04/07/22  LWAPO, LWAPO

2. Plotly可视化实现

将聚合后的数据可视化,同时在交互hover中展示关键做市商信息:

import plotly.express as px

# 绘制均价趋势线
fig = px.line(
    agg_result,
    x='date',
    y=['avg_bid', 'avg_ask'],
    labels={'value': 'Price', 'variable': 'Price Type'},
    title='Daily Average Bid/Ask Prices with Key Market Makers'
)

# 自定义hover提示,包含关键做市商
fig.update_traces(
    hovertemplate='Date: %{x}<br>Price: %{y:.4f}<br>Key Makers: %{customdata}',
    customdata=agg_result['mkt'].tolist()
)

fig.show()

关键逻辑说明

  • group['bid'].idxmax():直接获取当日bid最大值所在行的索引,避免先取最大值再匹配的冗余步骤
  • groupby.apply():一次性完成多维度聚合(均价计算+字符串拼接),比循环遍历效率提升数倍,适合处理1000+行的数据集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:21:01