如何合并DataFrame中仅第二列不同的重复行?
解决方法
用pandas的groupby+agg组合就能轻松实现,完全不需要写复杂的循环。
示例代码
假设你的DataFrame列名为col1、col2、col3(除第二列col2外,其余列值重复):
import pandas as pd # 构造示例数据 data = { 'col1': ['A', 'A', 'B', 'B'], 'col2': ['ValueA', 'ValueB', 'ValueC', 'ValueD'], 'col3': ['X', 'X', 'Y', 'Y'] } df = pd.DataFrame(data) # 方式1:将第二列合并为列表 result_list = df.groupby(['col1', 'col3'])['col2'].agg(list).reset_index() # 方式2:将第二列用分号分隔合并 result_semicolon = df.groupby(['col1', 'col3'])['col2'].agg('; '.join).reset_index()
关键说明
groupby(['col1', 'col3']):按除第二列外的所有列分组,把这些列值完全一致的行归为同一组agg(list):对每组的col2值聚合为列表;agg('; '.join)则是把值用「分号+空格」连接成字符串reset_index():将分组用的列从索引还原为普通列,得到结构规整的新DataFrame
如果需要转换成字典,直接用to_dict()即可:
# 转换为字典(以col1+col3为键,col2的合并值为值) result_dict = result_semicolon.set_index(['col1', 'col3'])['col2'].to_dict()
内容的提问来源于stack exchange,提问作者FuchsiaCode
相关产品推荐
相关产品推荐

