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

如何从pandas DataFrame按3行分组生成指定格式字典列表

你可以用pandas自带的分组聚合操作实现需求,代码逻辑简单,且针对1000行级别的数据运行效率极高:


默认连续整数索引场景代码

如果你的DataFrame是默认的0开始连续整数索引,直接用索引整除3作为分组键即可:

import pandas as pd

# 你的原始DataFrame
df = pd.DataFrame({'sym': ['a', 'b', 'c', 'x', 'y', 'z', 'q', 'w', 'e'],
                   'sym_t': ['tsla', 'msft', 'f', 'aapl', 'aa', 'gg', 'amd', 'ba', 'c']})

# 按每3行分组,拼接后转成目标格式的字典列表
options = df.groupby(df.index // 3) \
            .agg(value=('sym', ' '.join), label=('sym_t', ' '.join)) \
            .to_dict('records')

兼容任意索引场景代码

如果你的DataFrame索引不是默认的连续整数,改用全局行号作为分组依据即可,兼容性更强:

import pandas as pd
import numpy as np

df = pd.DataFrame({'sym': ['a', 'b', 'c', 'x', 'y', 'z', 'q', 'w', 'e'],
                   'sym_t': ['tsla', 'msft', 'f', 'aapl', 'aa', 'gg', 'amd', 'ba', 'c']})

# 用行号整除3作为分组键,不受原索引影响
options = df.groupby(np.arange(len(df)) // 3) \
            .agg(value=('sym', ' '.join), label=('sym_t', ' '.join)) \
            .to_dict('records')

运行结果

最终得到的options完全符合你要求的格式:

[
    {'value': 'a b c', 'label': 'tsla msft f'},
    {'value': 'x y z', 'label': 'aapl aa gg'},
    {'value': 'q w e', 'label': 'amd ba c'}
]

如果总行数不是3的整数倍,最后一组会自动保留剩余的1-2行拼接结果,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:06:01