如何用Pandas按分组提取DataFrame中的图片ID并生成指定格式输出?
Pandas分组格式化输出解决方案
嘿,我来帮你搞定这个需求!先明确下你的输入和目标输出:
输入DataFrame
Image Id 0 1a.jpg w_1 1 c4.jpg w_1 2 b01.jpg w_2 3 d5.jpg w_1 4 df.jpg w_f 5 c2.jpg w_2 6 ab.jpg w_3e
目标输出
(1a.jpg,c4.jpg,d5.jpg)(b01.jpg,c2.jpg)(df.jpg)(ab.jpg)
实现步骤与代码
核心思路就是按Id分组→合并每组的图片名→添加括号→拼接所有结果,用Pandas可以很简洁地实现:
import pandas as pd # 先构造你的示例DataFrame df = pd.DataFrame({ 'Image': ['1a.jpg', 'c4.jpg', 'b01.jpg', 'd5.jpg', 'df.jpg', 'c2.jpg', 'ab.jpg'], 'Id': ['w_1', 'w_1', 'w_2', 'w_1', 'w_f', 'w_2', 'w_3e'] }) # 分组处理+拼接结果 final_output = ''.join( df.groupby('Id')['Image'] .apply(lambda group: f'({",".join(group)})') ) print(final_output)
代码解释
df.groupby('Id')['Image']:按照Id列的值对Image列进行分组,把相同Id的图片名归为一组.apply(lambda group: f'({",".join(group)})'):对每个分组的图片名列表,用逗号拼接成字符串,再给整个字符串套上括号''.join(...):把所有带括号的分组字符串拼接成一个完整的字符串,就是你要的最终格式
如果习惯用agg方法,也可以写成这样,效果完全一致:
final_output = ''.join( df.groupby('Id')['Image'] .agg(lambda group: f'({",".join(group)})') )
内容的提问来源于stack exchange,提问作者user2324278
相关产品推荐
相关产品推荐

