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

按唯一id合并DataFrame的A、B列为浮点型嵌套列表列C

按ID合并A、B列为嵌套浮点列表的解决方案

你需要的是按id分组,将每组内的A、B值对合并成嵌套的浮点列表,而不是给每行生成元组列。这里有两种实用的实现方法:

方法1:分组后用列表推导生成嵌套结构

import pandas as pd

# 初始化你的DataFrame(如果已有可跳过)
df = pd.DataFrame({
    'ordinal': [1,2,3,4,5],
    'id': [14318]*5,
    'A': [45.0714,45.0739,45.0745,45.0833,45.0946],
    'B': [7.6187,7.6195,7.6152,7.6145,7.6194]
})

# 核心逻辑:按id分组,把每组的A/B转成嵌套列表
result_df = df.groupby('id').apply(
    lambda group: [[a, b] for a, b in zip(group['A'].astype(float), group['B'].astype(float))]
).reset_index(name='C')

print(result_df)

输出结果完全符合你的需求:

id                                                                 C
0  14318  [[45.0714, 7.6187], [45.0739, 7.6195], [45.0745, 7.6152], [45...

方法2:先构造单行列表再聚合(更高效)

如果数据量较大,这种方法性能更优:

# 先给每行生成[A,B]的浮点列表
df['pair'] = df.apply(lambda row: [float(row['A']), float(row['B'])], axis=1)
# 按id分组,把所有pair列表聚合为一个大列表
result_df = df.groupby('id')['pair'].agg(list).reset_index(name='C')

原代码的问题分析

你之前的df['C'] = list(zip(df.A.astype(float), df.B.astype(float)))只是给每行生成了一个元组列,没有做分组聚合——所以得到的是每行对应一个元组,而不是同一个id下的所有值对合并成一个大列表。上面的两种方法都完成了「分组+聚合嵌套列表」的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:05:27