You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于双ID合并表格行并按双列排序的技术实现问询

解决方案:基于EAN与album_id合并表格行并排序

嘿,这个表格处理需求用Python的Pandas库就能轻松搞定,它在分组聚合、列操作和排序上效率超高。我给你整理了完整的实现方案,一步一步来:

完整代码示例

import pandas as pd

# 加载原始数据(如果是从CSV/Excel读取,替换成pd.read_csv("你的文件路径")即可)
raw_data = {
    "EAN": [111, 111, 222, 222],
    "album_id": [123, 123, 123, 123],
    "photo": ["64.jpg", "65.jpg", "64.jpg", "65.jpg"]
}
df = pd.DataFrame(raw_data)

# 1. 按EAN+album_id分组,合并同组的photo为逗号分隔的字符串
merged_df = df.groupby(["EAN", "album_id"])["photo"].agg(", ".join).reset_index()

# 2. 添加primary列:根据EAN值设置1/0(这里以EAN=111作为primary判断条件)
merged_df["primary"] = merged_df["EAN"].map(lambda x: 1 if x == 111 else 0)

# 3. 按primary降序、EAN升序排序(保证primary=1的行在前,相同primary下按EAN从小到大排)
final_df = merged_df.sort_values(by=["primary", "EAN"], ascending=[False, True]).reset_index(drop=True)

# 查看结果
print(final_df)

代码逐段解释

  • 数据加载:这里用字典构造了你的示例数据,实际使用时换成读取文件的代码就行,比如pd.read_excel("album_photos.xlsx")
  • 分组合并groupby(["EAN", "album_id"]) 告诉Pandas要同时按这两个ID分组,agg(", ".join) 把每组里的所有photo值拼接成一个字符串,reset_index() 把分组后的索引转成普通列,避免索引混乱。
  • 新增primary列:用map函数快速判断EAN值,给符合条件的行标记1,其他标记0。如果你的primary判断逻辑有变化,直接修改lambda里的条件就行。
  • 排序sort_values 先按primary降序排列(让标记为1的行排在最前面),再按EAN升序,完全匹配你期望的结果顺序。

执行结果

运行代码后会输出你想要的表格:

EANalbum_idphotoprimary
011112364.jpg, 65.jpg1
122212364.jpg, 65.jpg0

如果你的数据量很大也不用担心,Pandas处理几十万行数据都很流畅,完全能满足需求。

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

火山引擎 最新活动