如何在Pandas中依据ID列重复值合并Design codes到同一单元格?
解决方案
假设你的DataFrame名为df,ID是分组列,Design codes是需要合并的列,第2至5列可根据实际列名替换(或通过索引动态获取)。直接通过groupby+agg一次性完成所有列的聚合,无需额外添加列:
import pandas as pd # 方式1:指定具体列名 agg_rules = { 'col2': 'first', # 替换为你的第2列实际列名 'col3': 'first', # 替换为你的第3列实际列名 'col4': 'first', # 替换为你的第4列实际列名 'col5': 'first', # 替换为你的第5列实际列名 'Design codes': lambda x: '\n'.join(x.astype(str)) } result_df = df.groupby('ID', as_index=False).agg(agg_rules)
关键说明
- 第2至5列因同一ID下值完全一致,用
'first'(或'max'/'min')即可保留有效唯一值,不会丢失信息。 Design codes列通过'\n'.join()将同一ID下的所有值用换行符拼接,实现单元格内换行显示;若该列已是字符串类型,可去掉.astype(str)。as_index=False确保分组后的ID列仍为普通列,而非索引。
如果不知道第2至5列的具体列名,可通过索引动态获取:
# 获取第2到5列的列名(索引从0开始,对应位置1-4) cols_to_keep = df.columns[1:5].tolist() # 动态构建聚合规则 agg_rules = {col: 'first' for col in cols_to_keep} agg_rules['Design codes'] = lambda x: '\n'.join(x.astype(str)) result_df = df.groupby('ID', as_index=False).agg(agg_rules)
内容的提问来源于stack exchange,提问作者RohitM
相关产品推荐
相关产品推荐

