Pandas:ID列去重、统计重复数并聚合Axis列
解决方案
直接用Pandas的groupby配合聚合函数就能实现需求,代码如下:
1. 构造示例数据
import pandas as pd # 匹配你的原始数据创建DataFrame data = { 'ID': [1, 1, 1, 2, 2, 3, 4, 4], 'Axis': ['1 2 3 4', '0 1 2 3', '4 5 2 4', '7 8 9 10', '1 2 3 4', '6 7 8 9', '1 2 3 4', '0 1 2 3'] } df = pd.DataFrame(data)
2. 分组聚合操作
# 按ID分组,统计重复次数并拼接Axis为列表 result = df.groupby('ID').agg( count=('ID', 'size'), # 统计每组行数,即对应ID的重复次数 Axis=('Axis', list) # 将每组的Axis值拼接成列表 ).reset_index() # 把ID从索引转为普通列,匹配期望输出格式
最终输出
运行后得到的结果与你期望的一致:
ID count Axis 0 1 3 [1 2 3 4, 0 1 2 3, 4 5 2 4] 1 2 2 [7 8 9 10, 1 2 3 4] 2 3 1 [6 7 8 9] 3 4 2 [1 2 3 4, 0 1 2 3]
如果你的Axis列存储的是数值数组而非字符串,上述代码逻辑完全适用,list聚合函数会自动把数组元素打包成列表。
内容的提问来源于stack exchange,提问作者KGP Vertiv
相关产品推荐
相关产品推荐

